DockerでWordPressを動かす #2
概要
前回の記事で、Dockerを使ってCentOS 6のコンテナを立ち上げることができるようになりました。
今回は、CentOS 6のコンテナにApache, MySQL, PHPをインストールし、その状態をイメージとして保存してみます。
ついでにローカルのブラウザからコンテナにアクセスしてみます。
Dockerコマンドの説明
今回使用するDockerコマンドについて説明します。
イメージからコンテナを起動してターミナルに入る
docker run -i -t イメージ名(:タグ名) /bin/bash
/bin/bash
と指定していますので、bashがフォアグラウンドで立ち上がります。
コンテナのターミナルを抜け出す場合は、ctrl+p
→ctrl+q
と入力します。
exit
やctrl+d
で終了させてしまうと、フォアグラウンドで動いているbash自体が終了してしまいます。docker run
で指定したコマンド(今回はbash)がフォアグラウンドでなくなった瞬間に、コンテナは終了してしまいますので注意してください。
一度抜けだしたコンテナのターミナルに再度入る
docker attach コンテナ名
ただし、コンテナのフォアグラウンドでシェルが動いている必要があります。
起動中のコンテナの名前はdocker ps
で確認できます。
コンテナをコミットし、イメージとして保存する
docker commit コンテナ名 新規イメージ名
コンテナにApache, MySQL, PHPをインストールする
まずはCentOS 6のイメージからコンテナを作り、ターミナルにアタッチします。
docker run -i -t centos:centos6 /bin/bash
CentOS 6にApache,MySQL,PHPをインストールします。ここではインストール手順の一例を記述します。
yum -y install sudo openssh-server nmap python-setuptools ntp yum -y httpd php mysql mysql-server gd php-mysql php-gd php-mbstring echo "ServerName 127.0.0.1:80" >> /etc/httpd/conf/httpd.conf echo "Hello World ^o^" > /var/www/html/index.html sed -e "/^\[mysqld\]$/a character-set-server = utf8" /etc/my.cnf mysql_install_db /etc/init.d/mysqld start mysqladmin -u root password "password" /etc/init.d/mysqld stop
これで、コンテナにLAMP環境が構築出来ました。
コンテナをコミットしてイメージ化する
ctrl+p
→ctrl+q
でターミナルからデタッチし、先ほどインストールを済ませたコンテナの名前を確認しましょう。
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cf98ea967d74 centos:centos6 "/bin/bash" 2 hours ago Up About an hour madoka_sayaka
コンテナ名がmadoka_sayaka
であることが確認できました。
それでは、このmadoka_sayaka
コンテナをコミットして、centos6_lampという名前のイメージにしましょう。
docker commit madoka_sayaka centos6_lamp
これで、LAMP環境がインストールされた新しいイメージcentos6_lampが作成できました。
ポートフォワード設定を行う
ローカルからコンテナにアクセスするのは
- ローカル → boot2docker-vm → コンテナ
という流れになっています。
ローカル → boot2docker-vm のポートフォワード設定
まず、boot2docker-vmを停止させます。
boot2docker down
ローカルのlocalhost(127.0.0.1)、ポート8080へのアクセスを、boot2docker-vmのポート8080につなげるよう設定します。
VBoxManage modifyvm "boot2docker-vm" --natpf1 "HTTPD,tcp,127.0.0.1,8080,,8080"
再びboot2docker-vmを立ち上げます。
boot2docker up
boot2docker-vm → コンテナ のポートフォワード設定
docker run
コマンドの-p
オプションで、コンテナを起動するときに設定します。
docker run -p VMのポート:コンテナのポート ...
自作イメージを用いてコンテナを起動する
先ほど作ったcentos6_lampイメージを使って、コンテナを立ち上げます。
この際、VMのポート8080をコンテナのポート80(Apache)で受け取るように設定します。
docker run -i -t -p 8080:80 centos6_lamp /bin/bash
コンテナに入り、Apacheを起動します。
apachectl start
これで、localhost:8080を待ち受けるコンテナが設定できました。
試しにローカルのブラウザからhttp://localhost:8080/
へアクセスしてみます。
確認できました!
続く
今回は、コンテナにLAMP環境を構築し、イメージとして保存し、イメージからLAMP環境を立ち上げ、ローカル環境からアクセスできるようにするところまで記載致しました。
次回は、環境構築をDockerfileで自動化し、実際にWordpressを動かしてみます。