前回はDockerをインストールし、環境を構築した。これでコンテナを起動してアプリケーションを利用できる環境は整った。今回は実際に、コンテナイメージを使用してアプリケーションを起動し、利用できるようにする。
Dockerコンテナイメージについて
Dockerの魅力のひとつとして、構築済みのコンテナイメージが用意されていることは第1回で説明した。Dockerのコンテナイメージは、コンテナイメージの登録や共有ができるサービスサイトで管理され、公開されており、代表的なサイトはDocker Incが提供するDocker Hubである。
DockerHubでは、以下の2種類のコンテナイメージが公開されている。
offical
Docker Incが公式にサポートしているコンテナイメージ
public
ユーザやコミュニティなどが独自に作成したコンテナイメージ
このため、例えばDocker Hubで「wordpress」と検索すると、複数のコンテナイメージが表示されることになる。コンテナイメージの提供元を確認するには、コンテナ名の下に「offcal」「public」と記載されているので、こちらで判断すればよい。
なおpublicのコンテナイメージは、独自にカスタマイズしたものが多く、通常の利用ではofficalで公開されているコンテナイメージがある場合は、officalを利用することをDocker Incは推奨している。
Official repositories on Docker Hub | Docker Documentation
今回はofficalのコンテナイメージを使用する。
Dockerコマンドについて
Dockerコマンドは、第一引数に目的のコマンドを指定して実行する必要がある。Dockerコマンドの一覧は、以下のコマンドで確認ができる。
$ docker
Dockerコマンド自体の利用方法は、「--help」を指定し確認ができる。例えば、docker container runコマンドの利用方法を確認するには、以下のように入力し、実行する。
$ docker container run --help
さて、Dockerコマンドはさまざまなものが存在し、すべてを紹介するのは難しい。そこで今回は、WordPressを起動することをゴールとし、構築方法を紹介する。WordPressを起動するために必要なコマンドは、これら6つである。
コンテナ起動
docker container run [OPTIONS] IMAGE [COMMAND] [ARG...]
コンテナのスタート、ストップ
docker container start [OPTIONS] CONTAINER [CONTAINER...]
docker container stop [OPTIONS] CONTAINER [CONTAINER...]
コンテナのリストを表示・取得
docker container ls [OPTIONS]
コンテナのログ確認
docker container logs [OPTIONS] CONTAINER
コンテナの破棄
docker container rm [OPTIONS] CONTAINER [CONTAINER...]
そのほかのDocker コマンドは、Docker Documentationにまとめられているので、興味がある方はチェックして欲しい。
では、これらのDockerコマンドはどのように使用すればよいか、手順をおって説明する。
WordPressのDockerコンテナを起動する
WordPressについては、officalのコンテナイメージが公開されているため、今回はこちらのコンテナイメージを利用する。
library/wordpress - Docker Hub
WordPressのコンテナイメージの紹介ページには、MySQLを事前に用意する必要があると記載されているため、まずはMySQLを起動する。MySQLもofficalでコンテナイメージが公開されているので、こちらを利用する。
MySQLをWordPress用としてコンテナを起動するには、以下のdocker container runコマンドを実行すればよい。
$ docker container run \
--name wordpress-mysql \
-v /opt/mysql:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=mysql \
-d \
mysql
docker container runコマンドは、docker container run(コンテナイメージ名)という形式で実行する。また、コンテナイメージ名の前にオプションを指定することで、コンテナの挙動を変更できる。このdocker container runコマンドで使用しているオプションについては、下記にまとめた。
オプション | 説明 |
---|---|
--name | コンテナに名前を設定する。dockerコマンドでコンテナを指定するときにコンテナIDではなく名前を使うことができる。今回は、MySQLのコンテナに対してwordpress-mysqlという名前を設定している。 |
-e | コンテナで使用する環境変数を指定する。MySQLの初期値を環境変数で変更できるようになっており、今回はMySQLのrootパスワードをmysqlとしている。 |
-d | コンテナをバックグラウンドで起動する。 |
MySQLのコンテナが正常に起動しているか確認するには、以下のdocker container lsコマンドで確認できる。
$ docker container ls -a
このコマンドを実行後、wordpress-mysqlのSTATUSがUpになっていれば、起動しており利用は可能だ。
起動に問題があった場合は、docker container logsコマンドでログを出力してアプリケーションの状況を確認する
$ docker container logs wordpress-mysql
失敗要因がわかれば、修正したdocker container runコマンドを実行すればよいが、この前に既存のMySQLのコンテナを破棄する必要がある。コンテナを破棄するには、docker container stopコマンドでコンテナを停止し、docker container rmコマンドでコンテナを破棄すればよい。
$ docker container stop wordpress-mysql
$ docker container rm wordpress-mysql
では、MySQLが正常に起動したところで、次にWordPressのコンテナを起動する。WordPressのコンテナを起動するためには、以下のdocker container runコマンドを実行すればよい。
$ docker container run \
--name my-wordpress \
--link wordpress-mysql:mysql \
-e WORDPRESS_DB_PASSWORD=mysql \
-p 8080:80 \
-d \
wordpress
このdocker container runコマンドで使用しているオプションは、下記にまとめる。
オプション | 説明 |
---|---|
--link※ | 同一のホストサーバで起動しているコンテナを接続できるようにする。 --link (接続したいコンテナ名):(コンテナ名の別名) WordPressのコンテナからMySQLのコンテナに接続できるようにしている。 |
-p | 同ホストサーバのポートとコンテナのポートマッピングをする。 -p (ホストサーバのポート番号):(コンテナのポート番号) 今回は、ホストサーバの8080ポートに対して、コンテナの80にポートマッピングしている。 |
※ --link オプションは現在非推奨となっているため、今後利用を検討している方は、docker networkコマンドによるbridge接続を推奨する。 Legacy container links/
WordPressのコンテナが正常に起動しているか確認するには、ホストサーバにブラウザよりアクセスをしてWordPressが正常に表示されるか確認できれば作業は完了だ。
http://(ホストサーバのIPアドレス):8080
今回はDocker Incが提供するofficalのコンテナイメージで、WordPressを起動してみた。 では、自分のオリジナルのDockerコンテナイメージでWordPressを起動したい場合は、どのようにすればよいか、次回の「Dockerのコンテナを作成してみよう」で説明する。
CloudGarage開発担当
IaaS型パブリッククラウドサービス「CloudGarage」の開発エンジニア。バックエンドのサーバ構築からフロントのアプリケーション開発まで幅広く行う。「Docker」は実務でも頻繁に利用するため、実際に使っている立場から「Docker」について解説をする。