LoginSignup
6
7

More than 5 years have passed since last update.

docker on Mac OS X

Posted at

目的

公式ドキュメントをもとに 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
6
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
7