Shipyard をインストールし MySQL のコンテナを作る

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

ログイン画面

f:id:gregminster:20170804213344p:plain

ログイン成功画面(コンテナ一覧)

f:id:gregminster:20170804213335p:plain

イメージの追加(MySQL)

以降は MySQL のコンテナを作ることを目的に操作してみます。まずは MySQL のイメージの取得です。「IMAGES」→「Pull Image」とクリックして、取得するイメージ名を入力するだけです。少し待ちます。

f:id:gregminster:20170804213550p:plain

f:id:gregminster:20170804213631p:plain

「Refresh」してみましょう。取得できていれば、イメージ一覧に以下のように追加されています。

f:id:gregminster:20170804213653p:plain

MySQL のコンテナの作成準備

取得できた MySQL のイメージをもとにしてコンテナを作ります。「CONTAINERS」をクリックし、「Deploy Container」をクリックします。するとコンテナ生成のための設定画面に遷移します。

f:id:gregminster:20170804213840p:plain

設定項目が多岐に渡りますが、ここは丁寧に設定しましょう。

MySQL のコンテナの作成(設定)

結論として、MySQL を日本語環境で設定する場合は以下のような設定になります。

f:id:gregminster:20170804213942p:plain

個別に入力内容を見ていきます。言及していない項目は空欄で構わない箇所です*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ボタンを押すと以下のようにコンテナが作成されます。

f:id:gregminster:20170804215009p:plain

コンテナ一覧の右端の虫眼鏡のアイコンをクリックすると詳細が見られます*5

f:id:gregminster:20170804215122p:plain

作ったコンテナの 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 イメージの詳細なドキュメントは公式ページをご覧ください。

*1:もちろん Docker 本体がすでに入っていることが前提です

*2:デフォルトでは 8080 番です

*3:もちろん必要に応じて入力できます

*4:ここはプルダウンメニューで選択できてもいいとは思うのですが、あえてそうしていないと思っています

*5:ただし Voluems でマウントした情報は見られないっぽいです

*6:ここらへんは Docker そのもののお話ですね

Powered by はてなブログ