https://docs.docker.com/installation/mac/ のページを参考にしてます。
dockerはlinuxカーネルの特別な機能を使っているらしくOS Xでは動かせないとのことなので、Boot2Dockerというツールを使ういいようです。
Boot2Dockerはコンテナを配置するLinux仮想マシンを作成するツールで、Macでコンテナを動かすために必要らしいのでインストールします。
$ brew install docker
==> Downloading https://homebrew.bintray.com/bottles/docker-1.6.2.yosemite.bottle.tar.gz
######################################################################## 100.0%
==> Pouring docker-1.6.2.yosemite.bottle.tar.gz
==> Caveats
Bash completion has been installed to:
/usr/local/etc/bash_completion.d
zsh completion has been installed to:
/usr/local/share/zsh/site-functions
==> Summary
🍺 /usr/local/Cellar/docker/1.6.2: 9 files, 7.3M
$ brew install boot2docker
==> Downloading https://homebrew.bintray.com/bottles/boot2docker-1.6.2.yosemite.bottle.tar.gz
######################################################################## 100.0%
==> Pouring boot2docker-1.6.2.yosemite.bottle.tar.gz
==> Caveats
To have launchd start boot2docker at login:
ln -sfv /usr/local/opt/boot2docker/*.plist ~/Library/LaunchAgents
Then to load boot2docker now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.boot2docker.plist
==> Summary
🍺 /usr/local/Cellar/boot2docker/1.6.2: 3 files, 7.3M
boot2dockerを初期化
boot2docker init
上記コマンドを実行すると~/.boot2docker/boot2docker.iso
, ~/.ssh/id_boot2docker
, ~/.ssh/id_boot2docker.pub
のファイルが作成されます。
boot2dockerのVMを起動
$ boot2docker up
Waiting for VM and Docker daemon to start...
...................ooo
Started.
Writing /Users/daichi/.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/daichi/.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/daichi/.boot2docker/certs/boot2docker-vm/key.pem
To connect the Docker client to the Docker daemon, please set:
export DOCKER_HOST=tcp://192.168.59.103:2376
export DOCKER_CERT_PATH=/Users/daichi/.boot2docker/certs/boot2docker-vm
export DOCKER_TLS_VERIFY=1
dockerでつかう環境変数をbashに設定する
$ eval "$(boot2docker shellinit)"
boot2docker shellinit
を実行すると
Writing /Users/daichi/.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/daichi/.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/daichi/.boot2docker/certs/boot2docker-vm/key.pem
export DOCKER_HOST=tcp://192.168.59.103:2376
export DOCKER_CERT_PATH=/Users/daichi/.boot2docker/certs/boot2docker-vm
export DOCKER_TLS_VERIFY=1
が標準出力に表示されるのでevalで評価している。
boot2docker up
でVMが起動していないとboot2docker shellinit
はエラーするので、VMを起動するたびにeval "eval "$(boot2docker shellinit)"
を実行する必要がある。
また新しいターミナルを立ち上げる時は環境変数をセットし直す必要が有るためにeval "$(boot2docker shellinit)"
を実行する必要がある。
ここまでするとdocker
コマンドでboot2dockerで作成したVMにコンテナを配置することができる。
サンプルに書いて有るnginxを立ち上げてみました。
$ docker run -d -P --name web nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from nginx
39bb80489af7: Pull complete
df2a0347c9d0: Pull complete
dc2e1697e33e: Pull complete
e21d523a1481: Pull complete
5ec936b59c11: Pull complete
3ec5f57e729c: Pull complete
1f1cfc8b4072: Pull complete
514f4db63e53: Pull complete
e2fde5e7e71f: Pull complete
8cac0c007422: Pull complete
72d73c46937a: Pull complete
a785ba7493fd: Already exists
nginx:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Digest: sha256:88f8d82bc9bc20ff80992cdeeee1dd6d8799cd36797b3653c644943e90b3acdf
Status: Downloaded newer image for nginx:latest
fa0d0969c7cff2e59d502e85d48531e03c352def9b4f5dc9d2be31a69505ac63
docker run
で指定したimageがないとdocker hubに登録されているものをダウンロードしてそれを起動するみたいです。
-d
はdocker run
コマンドが終了してもコンテナが起動し続けさせるフラグ。
-P
はEXPOSE
で公開するとしたポートをランダムなポートに設定して公開するフラグ。Macからnginxにアクセスするのに必要。
--name
はコンテナに名前を割り当てる。
VMで起動しているポートとipを調べる
$ boot2docker ip
192.168.59.103
$ docker port web
443/tcp -> 0.0.0.0:32771
80/tcp -> 0.0.0.0:32770
この場合はhttp://192.168.59.103:32770/
でnginxにアクセスできます。
最後にboot2docker down
でVMを終了します.
とりあえずここまででdockerの動作確認出来たので自作のDockerfileを作成して動かしてみようと思います。