アプリケーションへの影響を検証したりできるようになります。
デモンストレーション環境について
今回はDockerでMySQLの環境を複数用意して見るために、KitematicというDocker用のクライアントを使います。
KitematicはDockerのシンプルなオープンソースソフトウェアで、今なお開発が進んでいるDockerのGUIクライアントです。Dockerコマンドと違いGUI上でDockerHubから必要に応じてコンテナを落としてこれるようになっています。開発当初はMacにだけ対応していたのですが、現在ではWindowsでも利用できるようになっています。
Kitematic(Docker Toolbox)のインストール
Kitematicは現在はDockerのToolboxとして提供されています。Dockerの公式ページからOSにあったものをDownloadします。筆者の環境はMacなのでDownload(Mac)からダウンロードしました。バージョンはこの記事を書いている時の最新版1.8.3を使用しております。
インストーラを起動すると次の画面が表示されます。
続けるをどんどん押していきます。一部パスワードを求められますので、その他のアプリケーションをインストールする時と同様に入力します。
終了画面のひとつ前の画面で、Quick Start画面が開くのでそこでKITEMATICK(右側)を選択してあげます。また、ここで選択肢なかった場合はアプリケーションからKitematicを起動してあげれば問題なく進められます。
続けるを押してインストールが完了します。続けて初期設定に移ります。
DockerHubアカウントをお持ちの場合は入力してください。DockerHubはDockerコンテナを公開するためのWebサービスでDockerレジストリを構築することができるので便利ですが、お持ちでない場合は右下の「SKIP FOR NOW」を選択すると次に進めます。
さてこれにてインストールは完了です。続いてMySQLの任意のバージョンをインストールして使ってみましょう。
最新版のMySQLコンテナイメージをダウンロードする
起動画面の中央上部にある「Search for Docker images from DockerHub」にMySQLと入力してみましょう。そうするとDockerHub内にあるmysqlのコンテナに関して検索が始まります。
今回はRecommendedの中にあるofficialを利用しますが、その他にもDockerHubに自作のコンテナを登録している場合は、そちらを選択することもできます。
CREATEを押すとmysqlのlatestのバージョンに関してDockerコンテナのダウンロードが始まります。
ダウンロードが完了すると自動でDockerのコンテナが実行されます。しかし、下のようにログが表示されています。
何やらエラーメッセージのようなものが表示されています。
内容を読んでみるとrootパスワードが設定されていないというエラーメッセージが表示されているので、次ではちゃんと起動ができるように設定を行っていきます。
Dockerイメージの設定を変更する
右上のSettingsからメニューを開くと、General, Ports, Volums, Advancedの4つのメニューが開きます。
設定できる項目や内容は以下の表のようになります。
名前 | 設定できる項目の種類 |
General | コンテナ名やDockerで起動するときの環境引数をここで指定できます |
Ports | 外部のネットワークから接続する場合に、IPとPortの設定を確認変更することができます。 |
Volums | コンテナがマウントするディレクトリを選択することができます。 |
Advanced | Kitematicを終了した時のVMの扱いなどを設定することができます。 |
今回はrootパスワードを設定したいのでGeneralのメニューからパスワードを引数として渡してあげます。Generalのメニュー内にあるEnviroment VariablesにMySQLのDockerのイメージ起動方法に書かれているように、MYSQL_ROOT_PASSWORDを設定してあげます。
その他にも今回は使っていませんが、いくつか設定できる項目があるようです。設定できる項目に関しては同じページ内のEnviroment Variablesに記載されてます。
入力が終わったあとSAVEを押すと設定が保存され、再起動が自動で走ります。再起動後の画面が以下のようなものになります。
先ほどのエラーとは違うログが出力されていることがわかります。無事起動が完了しました。
mysqlコマンドラインツールを使って繋いでみましょう。ここではhomebrewを使ってインストールをしたものを利用してます。hostのipとportはSettingsのPortから確認できます。
ということで、latest(記事作成時には5.6.27)に無事接続できました!
アプリケーションを使用している人は設定でhostとportをDockerのものに変更してあげるだけで、今まで使ってたアプリケーションから簡単に違うバージョンのmysqlを試すことができるようになります。
続けて、これから皆さんが移行を検討することになるであろう5.7の最新版に接続をしてみたいと思います。
最新のMySQL5.7を試してみる
左上にあるContainersの右にある+NEWボタンを押して新規のコンテナを追加します。
すると初回起動をした時と同じ画面に移ります。
そこで先ほどと同様にMySQLを検索バーに入力します。すると下のような検索結果がやはり表示されると思います。
前回はそのままCREATEボタンをクリックしましたが、5.7をインストールしたいので、バージョンの指定を行います。CREATEの左にあるメニューをクリックします。今回は任意のバージョンを選択したいのでSELECT TAGをクリックします。
すると下のような画面が開き、TAGが選択できることがわかります。ここで5.7.8を選択し、検索結果の画面まで戻ります。
その後CREATEを行うとMySQL5.7.8のイメージを利用したコンテナが作成されます。ただし、何も設定せずに起動をしようとすると、先ほどと同じように以下のエラーメッセージが表示されてしまいます。
lastestで行った時と同様にMySQL_ROOT_PASSWORDの設定やその他の設定を必要に応じて行いましょう。
このように簡単にMySQL5.7の実験環境が手に入りました。
今回はMySQL5.7をインストールしてみましたが、この方法を使って任意のバージョンのMySQL環境をディスクの許す限り用意することができます。
まとめ
今回はKitematic(Docker)を利用して、開発環境にMySQLを複数バージョン用意する方法を紹介してみました。Kitematicに限らずDockerをうまく使うとMySQLのアップデート時、アップグレード時に機能の比較やアプリケーションの検証をする際に、ローカルにすでにある環境を汚さずにコンテナとして実行できます。今すぐに最新機能を試してみようと思った際には、ぜひ活用してみてください。