前回は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 | Docker Documentation

では、これらのDockerコマンドはどのように使用すればよいか、手順をおって説明する。

WordPressのDockerコンテナを起動する

WordPressについては、officalのコンテナイメージが公開されているため、今回はこちらのコンテナイメージを利用する。

library/wordpress - Docker Hub

WordPressのコンテナイメージの紹介ページには、MySQLを事前に用意する必要があると記載されているため、まずはMySQLを起動する。MySQLもofficalでコンテナイメージが公開されているので、こちらを利用する。

library/mysql - Docker Hub

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」について解説をする。