Mac
docker

[和訳] Docker for Mac vs. Docker Toolbox

この記事はDocker for Mac vs. Docker Toolboxを和訳したものです。

もしすでにDocker Toolboxのインストールを行っているなら、Docker for MacとDocker Toolboxの違いとどのように共存できるかを学ぶためにこれらのトピックを読んで下さい。

Docker Toolboxの環境

  • /usr/local/bin以下にdocker,docker-compose,docker-machineを入れる。
  • VirtualBoxをインストールする。
  • インストールするときにToolboxはdocker-machineを使いVirtualBoxのdefaultを呼び、$HOME/.docker/machine/machines/defaultboot2dockerを走らせる。

dockerdocker-composeを使う前に、形式的にeval $(docker-machine env default)を使えば、VirtualBox上で走るDockerエンジンに命令を投げることができる。

Docker for Macの環境

  • /Applications以下にインストールされる。
  • インストール時に/Applicatoins/Docker.app/Contents/Resources/binから/usr/local/binにシンボリックリンクを貼るり、dockerdocker-composeを使えるようにする。

ここからはDocker for Macを始める前のポイントです。

  • Docker for MacはVirtualBoxを使わずHyperKitを使います。
  • Docker for MacをインストールしてもDockerMachineには影響はありません。インストール時にコンテナとイメージをDocker Toolboxのdefault(もしあるなら)からHyperkitにコピーするように提示します。コピーしてもdefaultはそのまま残ります。
  • Docker for MacはVMにつなげるためにdocker-machineを使いません。
  • インストール時にDocker for MacはHyperKit VMを使ってDocker Engineを走らせます。dockerAPIを/var/run/docker.sockに見せます。何も設定しなければこれがデフォルトの場所になるので、docker,docker-composeが使えるようになります。

もしいろいろなVMを使いまわしたいなら、引き続きdocker-machineを使ってください。詳しくはDocker ToolboxとDocker for Macの共存に載っています。

Docker for Macのセッティング

  1. まずはDocker Toolboxの環境がセットしてあるかの確認
$ env | grep DOCKER

DOCKER_HOST=tcp://192.168.99.100:2376
DOCKER_MACHINE_NAME=default
DOCKER_TLS_VERIFY=1
DOCKER_CERT_PATH=/Users/victoriabialas/.docker/machine/machines/default

もしこのコマンドで何も返って来なければそのままDocker for Macを使ってください。
2. 上の環境を消す
以下のコマンドを実行してください。

unset DOCKER_TLS_VERIFY
unset DOCKER_CERT_PATH
unset DOCKER_MACHINE_NAME
unset DOCKER_HOST

# bashの場合はこれでも可能(`zsh`の場合はこれは動きません)
unset ${!DOCKER_*}
  1. 確認 以下のコマンドで何も返ってこないことを確認してください。
$ env | grep DOCKER

もしDockerToolboxがインストールされているのに、Docker for Macをインストールすると、、、

Docker for Macがdockerdocker-composeをシンボリックリンクで上書きしてしまいます

Docker ToolboxとDocker for Macの共存

両方を使うことは可能です。もし、Docker for Macを使う場合は、DOCKERの環境を消してください。例えばbashならunset ${!DOCKER_*}が使えます。もしdocker-machineコマンドでVirtualBoxを使いたくなれば、eval $(docker-machine env default)(使いたいVMの名前を使ってください)を使えば大丈夫です。
これでDockerToolboxとDocker for Macを切り替えることができます。

Docker toolsの違うバージョンを使いたいとき

上の共存がうまくいくのは、VirtualBoxの提供しているdocker-machineとDocker for Macのバージョンが同じ時だけです。もし、違うバージョンのDockerEngineを使いたいならDocker Version managerが役に立つでしょう。

構成しているバージョンをチェックしよう

Docker CLIクライアントとDocker Engineは同じバージョンである必要があります。クライアントとサーバーの間に違いがあると、Docker Machineが問題を発生することがあります

もしDocker ToolboxとDocker for Macをインストールしているなら、新しいバージョンのDockerクライアントを手に入れましょう。シェルでdocker versionをすると、クライアントとサーバーのバージョンが分かります。