iriya-ufo's blog

Curiosity was simply the first derivative of knowledge.

Docker for Mac を使う

『Mac に Docker 環境を構築する』を書いてしばらくしたら boot2docker が非推奨となって『Docker-machine で Mac に Docker 環境を構築する』を書いたら今度は Docker for Mac がナウいとかなって今回の記事に至ります。仮想環境は変化が速くていろいろ大変です。

Docker for Mac はネイティブに動作する Docker 環境らしく先日β版から正式公開となったようです。Docker が Linux カーネル上で動作するのにネイティブってどういう意味や?と思ってましたが、どうやら VirtualBox のようなホスト型仮想環境ではなく Mac OS X 組み込みのハイパーバイザー型の HyperKit を使って仮想環境を作るから速いらしいとのことでした。ネットワーク周りに面倒ごともなさそうなので今から環境作るなら Docker for Mac 一択かなという感じがします。

概要

初めてインストールする場合は Docker for Mac にしたがっていけばすぐに終わります。 Docker Toolbox などを使っていた場合は移行が必要です。僕は brew で各種コマンドをインストールして使っていました。

基本的な差異はここに丁寧にまとめられています。

簡単にポイントだけ抜き出して書くと

Docker Toolbox

  • Docker Toolbox は各種 docker コマンドが /usr/local/bin に入る
  • 証明書とかの情報は $HOME/.docker/machine/machines/default に入る
  • eval $(docker-machine env default) で環境変数をロードする

Docker for Mac

  • /Applications にアプリがインストールされる
  • 各種コマンドは /usr/local/bin に symlink が貼られる
  • 実体は /Applications/Docker.app/Contents/Resources/bin

さらに Docker for Mac の特徴として以下があります。

  • VirtualBox ではなく HyperKit を使う
  • docker-machine で作成したものには影響を与えない
  • Docker for Mac のインストール時に default イメージやコンテナに関してはローカルにあるものからコピーされオリジナルは維持する
  • /var/tmp/docker.sock ソケットを使ってやり取りするから環境変数とかいらない

設定

以上を踏まえると以下の手順でよさそうです。

  • VirtualBox はそのままでもアンインストールしてもいい
  • .zsh などに書いた環境変数設定は unset する
  • brew でいれた docker ツール群はアンインストールする
  • Docker for Mac をインストールする

また Docker Toolbox が使いたくなったときは環境変数をセットするだけで良さそうです。