Macでdocker-compose upするまで

はじめに

同じパソコンを複数人で似たような開発環境を使いたいとき、オーバーヘッドが少ないDockerなどを使うのが便利そうなので、Dockerを導入してみました。 QuickStart:Wordpressを参考に進めていきたいと思います。

まずは、Docker周りの諸々をインストールしたいと思います。

インストール編

brewを使って、インストールしてみたいとおもいます。

$ brew install docker
$ brew install docker-compose

すると、brewが空気を読んでくれるので、 関連するdocker-machine、boot2dokcerもインストールしてくれます。

$ brew search docker
boot2docker ✔                      docker-compose ✔                   docker-machine-driver-xhyve  
docker ✔                           docker-gen                         docker-machine-parallels     
docker-cloud                       docker-machine ✔                   docker-swarm                 

クイックスタート

QuickStart:Wordpressをやりました。

起動編

さて、準備が整ったので、docker-compose.ymlのあるディレクトリで$ docker-compose upすると、以下のエラーが返ってきました。

$ dokcer-compose up
ERROR: In file './docker-compose.yml' service 'version' doesn't have any configuration options. All top level keys in your docker-compose.yml must map to a dictionary of configuration options.

要約すると、「docker-compose.ymlにversionなんて文法ないぜ」と言っています。
これは、最近docker-composeの文法が変わったからですね。

つまり、さっきbrewでインストールしたdocker-composeのバージョンが古いということですね。

$ docker-compose -v
docker-compose version 1.5.2, build unknown
$ brew update && brew upgrade docker-compose
(略)
$ docker-compose -v
docker-compose version 1.6.2, build unknown

これで準備が整ったと思い、dokcer-compose upしてみると、以下のエラーが出ました。

$ dokcer-compose up
ERROR: Couldn't connect to Docker daemon - you might need to run `docker-machine start default`.

要約すると、「dokcer-machineを起動してね」と言っています。
たしかにdokcerのホストを立てるのを忘れていました。エラーにコマンドが書いてあったので、コピペすると

$ docker-machine start default
Host does not exist: "default"

「defaultなんてないよ」と返ってきました。
たしかに作っていません。。。

調べると、以下のコマンドでvirtualbox上に立てることができるようです。

$ docker-machine create --driver virtualbox default
 (略)
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env default

できましたね。

ここで安易にdocker-compose upをしてみました。

$ docker-compose up
ERROR: Couldn't connect to Docker daemon - you might need to run `docker-machine start default`.

「docker-machine立ててね」と返ってきました。
あれ?dokcer-machine create なんとかのコマンドを失敗したかな、と思い、見返してみると、メッセージの最後にdocker-machine env defaultしなさいと書いてありました。

$ docker-machine env default
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.xxx.xxx:xxxx"
export DOCKER_CERT_PATH="/Users/username/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell: 
# eval $(docker-machine env default)

なるほど、環境変数がないとdefaultってなんだってなりますね。 出力されたコマンドをコピペして実行します。

最後に、dokcer-compose upしてみます。

$ docker-compose up
Creating network "wordpress_default" with the default driver
Pulling db (orchardup/mysql:latest)...
latest: Pulling from orchardup/mysql
a3ed95caeb02: Pull complete
ca6bba82817b: Pull complete
4dd65252e0f1: Pull complete
be0b1884448e: Pull complete
ec7f480149bd: Pull complete
4d47b129db1b: Pull complete
509d49bb800b: Pull complete
db95baf50f96: Pull complete
4b5f0bbad8d8: Pull complete
Digest: sha256:d5abef23d5afc4f46ee9e886ca0482d08dbfee4f060c85ce3fb23b975a1457c6
Status: Downloaded newer image for orchardup/mysql:latest
Creating wordpress_db_1
Building web
Step 1 : FROM orchardup/php5
latest: Pulling from orchardup/php5
a3ed95caeb02: Already exists
0d8710fc57fd: Pull complete
50a5d0820b57: Pull complete
6e2b87398c21: Pull complete
fc75ac9e2d34: Pull complete
6d7627f26e84: Pull complete
Digest: sha256:166c2488a7cd60dc02f0cfcb0b606db38ff251f36cb5b10e8b837d9619c41036
Status: Downloaded newer image for orchardup/php5:latest
 ---> d8e939bb8720
Step 2 : ADD ./code /code
 ---> 700d3ce694a4
Removing intermediate container e3bfb9872fe0
Successfully built 700d3ce694a4
Creating wordpress_web_1
Attaching to wordpress_db_1, wordpress_web_1

成功ですね!

まとめ

dockerのツールたちは、エラーメッセージが優しいですね。 躓いても、次の手がすぐ打てます。