目的
公式ドキュメントをもとに Mac で docker をセットアップして、Nginx で HTML を表示するあたりまで。
boot2docker セットアップ
boot2docker をインストール
$ brew install boot2docker
自分の環境ではエラー発生
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
Could not symlink bin/docker
Target /usr/local/bin/docker
already exists. You may want to remove it:
rm '/usr/local/bin/docker'
To force the link and overwrite all conflicting files:
brew link --overwrite docker
To list all files that would be deleted:
brew link --overwrite --dry-run docker
Possible conflicting files are:
/usr/local/bin/docker
==> Summary
🍺 /usr/local/Cellar/docker/1.5.0: 9 files, 7.2M
==> Installing boot2docker
==> Downloading https://homebrew.bintray.com/bottles/boot2docker-1.5.0.yosemite.bottle.tar.gz
######################################################################## 100.0%
==> Pouring boot2docker-1.5.0.yosemite.bottle.tar.gz
==> Caveats
To have launchd start boot2docker at login:
すでにあった docker を削除してシンボリックリンク作成
$ rm -f /usr/local/bin/docker
$ brew link --overwrite docker
Boot2Docker VM を作成します
$ boot2docker init
Boot2Docker VM を起動します
$ boot2docker start
環境変数を確認します
$ boot2docker shellinit
環境変数を設定します。環境ごとに必要なので、.bashrc などに書くとよいかも。
$ eval "$(boot2docker shellinit)"
boot2docker の状態確認と docker のバージョン確認をします
$ boot2docker status
$ docker version
hello-world コンテナを使ってセットアップできたか確認します
$ docker run hello-world
Nginx コンテナを起動して、Mac のブラウザからアクセス
Docker Host 上で Nginx コンテナを起動します
$ docker run -d -P --name web nginx
実行中のコンテナを表示します
$ docker ps
コンテナと Docker Host のポートのマッピングを表示します
$ docker port web
443/tcp -> 0.0.0.0:49156
80/tcp -> 0.0.0.0:49157
このまま 0.0.0.0 を localhost に置き換えて Mac のブラウザで http://localhost:49157 にアクセスしても、
Nginx にアクセスできません。
理由は、Mac 上で動いてるんではなく、Docker Host 上で動いているからです。
なので、Docker Host の IP を取得します。
$ boot2docker ip
192.168.59.103
ブラウザで http://192.168.59.103:49157 にアクセスすると、Nginx のようこそ画面が表示されます。
コンテナの停止と削除は以下のコマンドを実行します。
$ docker stop web
$ docker rm web
コンテナに Volume をマウントします
boot2docker は起動時に自動で /Users を共有します。
コンテナにディレクトリをマウントするために、この共有ポイントを使用することができます。
Mac 上に html ファイルを作成します。
$ mkdir -p ~/site
$ cd ~/site
$ echo "my new site" > index.html
作成した site ディレクトリをマウントするように Nginx コンテナを起動します。
$ docker run -d -P -v $HOME/site:/usr/share/nginx/html --name mysite nginx
コンテナのポートを確認します
$ docker port mysite
$ 80/tcp -> 0.0.0.0:49166
$ 443/tcp -> 0.0.0.0:49165
ブラウザで http://192.168.59.103:49166 にアクセスして、作成した html("my new site") が表示されれば成功です。
html ファイルをリアルタイムに追加できます。
$ echo "This is cool" > cool.html
ブラウザで http://192.168.59.103:49166/cool.html にアクセスして、追加した html("This is cool") が表示されれば成功です。
コンテナの停止と削除をします。
$ docker stop web
$ docker rm web