DockerでWordPressを動かす #1
概要
簡単に仮想環境を構築、共有できるDockerを使用して、LAMP環境を構築する手順を記載します。最終的に、構築した仮想環境でWordpressが動くようになることを最終的な目標とします。
今回は、Dockerのおおざっぱな概要をつかみ、MacOSからDockerを扱うことができる環境を構築するまでを目標とします。
Dockerの概要
Dockerのしくみ
詳細については、「はじめてのDocker on Mac OS X」に素晴らしい解説がありますので、そちらに譲ります。
ここでは、おおざっぱな仕組みだけを解説します。
- イメージ(OSイメージ)を元に、コンテナ(仮想環境)を立ち上げる。
- コンテナはいくつでも立ち上げることが可能。
- コンテナ上で作業を行い、変更を加えた後、そのコンテナを新規イメージとしてコミット(保存)することが可能。
- 構築したイメージを共有するのがとっても楽。
Dockerはどこで動くのか
Linux上で動きます。ホストOSとしてはCoreOSやAtomicなどが多く利用されているようです。
MacOSやWindowsから利用する場合は、Dockerを動かすためのVMを用意し、その上で動かします。
今回は、Dockerを動かすためのVMを、ええかんじに立ち上げて、ええかんじにローカル環境と接続してくれるboot2dockerを使用する方法を説明します。
Docker環境の構築
boot2dockerのインストール
Homebrewを用いてインストールします。
brew install docker boot2docker
boot2dockerを使用してDockerホストVMを立ち上げ
boot2dockerには、vagrantライクなコマンド郡が用意されています
初回立ち上げ時のみ、ホストOSのイメージを取得する必要があります。
boot2docker init
イメージの取得が終わったら、boot2docker-vmを立ち上げましょう。
boot2docker up
立ち上げに成功した場合、次のような文章が表示されます。
To connect the Docker client to the Docker daemon, please set: export DOCKER_HOST=tcp://192.168.1.100:2376 export DOCKER_CERT_PATH=/Users/yourname/.boot2docker/certs/boot2docker-vm export DOCKER_TLS_VERIFY=1
実行環境によってyourname
や192.168.1.100:2376
の部分は異なりますので注意して下さい。
これは「環境変数を設定しろ」ということですので、export DOCKER...
の3行をそのまま実行します。
export DOCKER_HOST=tcp://192.168.1.100:2376 export DOCKER_CERT_PATH=/Users/yourname/.boot2docker/certs/boot2docker-vm export DOCKER_TLS_VERIFY=1
注 これらの環境変数はroot権限で参照されますので、あなたの~/.bash_profile
に記述しても意味はありません。
設定が終わったら、Dockerがboot2docker-vmに正しく接続されているかを確かめましょう。
docker version
表示結果の中に、サーバーの情報がみあたるならば、設定は成功しています。
Server version: 1.3.1 Server API version: 1.15
これでDockerを使用する準備が整いました。
CentOS 6のコンテナを起動してみよう
せっかくなので、CentOS 6のイメージを取得し、コンテナとして実行してみましょう。
まずは、Docker Hub RegistryからCentOS 6のイメージを取得します。
docker pull イメージ名(:タグ名)
を使用して、イメージを取得することができます。
どのようなタグが用意されているかは、オフィシャルレポジトリのページに記載されています。
docker pull centos:centos6
すると、ダウンロードが始まり、最終的に次のような結果が得られると思います。
centos:centos6: The image you are pulling has been verified 511136ea3c5a: Pull complete 5b12ef8fd570: Pull complete 70441cac1ed5: Pull complete Status: Downloaded newer image for centos:centos6
正しく取得されたかどうか確かめるためには、次のように入力しましょう。
docker images
REPOSITORY TAG IMAGE ID VIRTUAL SIZE centos centos6 70441cac1ed5 215.8 MB
CentOS 6が正しく取得されていることが確認できます。
ダウンロード時に表示されていた、511136ea3c5a
と5b12ef8fd570
は、70441cac1ed5 (centos:centos6)
の親(差分元)イメージであるため一覧には表示されません。
それではCentOS 6のコンテナを立ち上げてみましょう。
docker run -i -t centos:centos6 /bin/bash
バージョンを確認してみます。
$ cat /etc/redhat-release CentOS release 6.6 (Final)
CentOS 6.6が起動していることがわかります。
この状態でctrl+p
→ctrl+q
と入力し、仮想環境から抜け出しましょう。
起動中のコンテナ一覧を表示して、先ほど立ち上げたCentOS 6のコンテナが起動していることを確認します。
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 229a8dfa5716 centos:centos6 "/bin/bash" 8 minutes ago Up 8 minutes evil_nobel
evil_nobel
という名前でコンテナが起動していることが確認できます(名前はランダムで設定されます)。
コンテナのターミナルにもう一度入ってみましょう。evil_nobelの部分は各自の環境に合わせて下さい。
docker attach evil_nobel
何度かEnterを入力すると、再度コンテナの中に入ったことが確認できると思います。
コンテナのbashを終了させます。
exit
フォアグラウンドで動いているプロセスが終了すると、コンテナは終了します。
docker ps
実行中のコンテナはひとつもありませんので、何も表示されないことを確認して下さい。
続く
今回は、MacOSからDockerを扱うことができる環境を構築するところまでを記載致しました。
次回は、LAMP環境を構築して、ローカルのブラウザからページを表示してみます。