Shipyard
Docker
の管理をウェブブラウザから行えるShipyard
をインストールしていきます。MySQL
のコンテナも作ってみます。
Shipyard のインストール
Shipyard 自体のインストールは極めて簡単です。1分とかからないと思います*1。公式サイトのドキュメントにあるとおり、以下のコマンドを叩きます。
$ curl -sSL https://shipyard-project.com/deploy | bash -s
注意点1: オプションを指定するとき
起動時には様々なオプションが指定できます。おそらくほぼ使われると思うのがPORT
オプションでしょう*2。ポート番号を例えば 22222 に指定する場合は、インストール時のコマンドを以下のように修正します。
$ curl -sSL https://shipyard-project.com/deploy | PORT=22222 bash -s
注意点2: sudo のとき
Docker のコマンドが sudo でしか実行できないときは注意が必要です。具体的には、bash を sudo する必要があります。さらに、オプションを指定する場合には sudo に -E オプションを付ける必要があります。
つまり、sudo で ポート番号を 22222 に指定する場合は以下のようになります。
$ curl -sSL https://shipyard-project.com/deploy | PORT=22222 sudo -E bash -s
インストール成功の確認
インストールが進んでうまくいけば以下のようにアドレスとアカウントが表示されるでしょう。
$ curl -sSL https://shipyard-project.com/deploy | sudo bash -s ... ... Shipyard available at http://192.168.100.100:8080 Username: admin Password: shipyard
あとは設置したアドレスにアクセスして、以下の初期アカウントでログインするだけです。
username: admin password: shipyard
ログイン画面
ログイン成功画面(コンテナ一覧)
イメージの追加(MySQL)
以降は MySQL のコンテナを作ることを目的に操作してみます。まずは MySQL のイメージの取得です。「IMAGES」→「Pull Image」とクリックして、取得するイメージ名を入力するだけです。少し待ちます。
「Refresh」してみましょう。取得できていれば、イメージ一覧に以下のように追加されています。
MySQL のコンテナの作成準備
取得できた MySQL のイメージをもとにしてコンテナを作ります。「CONTAINERS」をクリックし、「Deploy Container」をクリックします。するとコンテナ生成のための設定画面に遷移します。
設定項目が多岐に渡りますが、ここは丁寧に設定しましょう。
MySQL のコンテナの作成(設定)
結論として、MySQL を日本語環境で設定する場合は以下のような設定になります。
個別に入力内容を見ていきます。言及していない項目は空欄で構わない箇所です*3。いくつかの設定内容は公式ページの内容に基づきます。
Image Configuration -> Image Name
イメージ名を入力します。MySQL のコンテナを作りたいのでmysql
と入力します*4。
Image Configuration -> Command
起動オプションを入力します。日本語環境ということで、--character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
と入力します。
Image Configuration -> Hostname
そのまんま、ホスト名です。未入力の場合は Docker 側で付けてくれます。
Environment Variables -> Name
環境変数の「変数名」を入力します。MySQL の root アカウントのパスワードを指定するためにMYSQL_ROOT_PASSWORD
と入力します。MySQL のイメージにおいてはこれは必須です。
Environment Variables -> Value
環境変数の「値」を入力します。MYSQL_ROOT_PASSWORD
に対応する値としてmy-secret-pw
と入力します。
Volumes -> Host Path
データをホストとコンテナで共有する際のホスト側の場所を入力します。ここでは MySQL のデータベースのデータの永続化の場所として、/opt/docker_mysql
を指定しています。
Volumes -> Host Path
前者の共有の際のコンテナ側の場所を入力します。これは/var/lib/mysql
ですね。
Container Name
コンテナ名です。未入力の場合は Docker 側で付けてくれます。
Restart Policy
Docker を再起動(マシンを再起動)した場合の挙動です。常にこのコンテナが起動してほしいのでAlways restart
を指定しました。
Port Configuration -> Container Port
コンテナ側の使用ポートとホスト側の使用ポートの対応を設定する際の、コンテナ側のポート番号の指定です。MySQL イメージでは MySQL の実行ポートはデフォルトの 3306 となっているのでその値を入力します。
Port Configuration -> Host Port
前者におけるホスト側のポート番号の指定です。ここでは 12345 を指定しました。
MySQL のコンテナの作成(実行)
ここまで設定できたならDeploy
ボタンを押すと以下のようにコンテナが作成されます。
コンテナ一覧の右端の虫眼鏡のアイコンをクリックすると詳細が見られます*5。
作ったコンテナの MySQL を使ってみる
シェルから動作確認をしましょう。まずはログインです。パスワードはmy-secret-pw
です。
$ mysql -u root -p -h 127.0.0.1 -P 12345 Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. ... ...
無事ログインできたならば、文字コードを確かめましょう。なお、クライアント側はdefault-character-set=utf8mb4
と指定済みです(参考)。
mysql> SHOW VARIABLES LIKE 'chara%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.01 sec)
これで MySQL のコンテナが期待通りに作られていることが確認できました。
補足
MySQL の設定を柔軟に変更するためにはコンテナ側の/etc/mysql
配下が自由にいじれるといいですね。そのためには当該場所をマウントすればよいのですが、一番最初のコンテナ起動時にマウントするとコンテナ側はまっさらになってしまうので、適当な初期設定ファイルをホスト側に置いてからマウントをすればいいでしょう*6。
その他、上記内容も含んでいる MySQL イメージの詳細なドキュメントは公式ページをご覧ください。