DockerをOSXやWindowsで使う時の注意点

Dockerの基本的な使い方については「いまさら聞けないDocker入門」がいいと思います。

DockerをOSXWindowsで使う場合、加えてboot2dockerというソフトウェアを間に挟む必要があってもう少し複雑なのでメモ。

boot2docker?

OSXWindowsだとDockerは動かない(Linuxでしか動かない)ので、VirtualBox上に小さなLinux(Tiny Core Linux)を動かしてその上にDockerを載せたものをコマンドライン上ではOSXで動いてるように見せかけるものです。

実際はVirtualBox上で動いているLinuxと通信しているだけなので、特殊な環境変数の設定が必要だったり、WebアプリをOSXのブラウザで動かす時に少し特殊な設定が必要になったりします。

Boot2docker by boot2docker

インストール

起動

使う時はboot2docekr startします。

$ boot2docker start
Waiting for VM and Docker daemon to start...
..
Started.

To connect the Docker client to the Docker daemon, please set:
    export DOCKER_HOST=tcp://xx.xx.xx.xx:xxxx  # <- 注目

export DOCKER_HOST=.....をシェルに環境変数を設定します。使う度に設定する必要があります。 環境変数が設定されていないとdockerコマンドが実行出来ないので注意が必要です。

# DOCKER_HOST環境変数が設定されていない・・
$ docker images 
2014/10/15 00:24:05 Get http:///var/run/docker.sock/v1.14/images/json: dial unix /var/run/docker.sock: no such file or directory

環境変数を設定すると

$ export DOCKER_HOST=tcp://xx.xx.xx.xx:xxxx

無事動くようになります。

$ docker images
REPOSITORY                    TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
ongaeshi/milkode-gem          latest              47ebab29ce3e        32 hours ago        359.8 MB
<none>                        <none>              294dc46ed42a        32 hours ago        327.1 MB
<none>                        <none>              28b53e9e9b49        32 hours ago        327.1 MB
<none>                        <none>              400f06f6451a        32 hours ago        327.1 MB

Dockerで立ち上げたWebアプリのコンテナをOSX上のブラウザ上で操作する

例えば Dockerizing a Node.js web application - Docker Documentationに沿って実行するとWebアプリ立ち上げまでは上手くいくのですがlocalhost:49160にアクセスしてもWebアプリが表示されません。

先ほども言ったようにこのWebアプリはVirtualBox上で実行されているのでboot2docker ipで取得したIP経由でアクセスするばよいです。

$ boot2docker ip

The VM's Host only interface IP address is: 192.168.59.103

整理すると

$ open http://192.168.59.103:49160

でOKです。よいDocekrライフを。