この記事は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/default
でboot2docker
を走らせる。
docker
やdocker-compose
を使う前に、形式的にeval $(docker-machine env default)
を使えば、VirtualBox上で走るDockerエンジンに命令を投げることができる。
Docker for Macの環境
- /Applications以下にインストールされる。
- インストール時に
/Applicatoins/Docker.app/Contents/Resources/bin
から/usr/local/bin
にシンボリックリンクを貼るり、docker
とdocker-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のセッティング
- まずは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_*}
- 確認
以下のコマンドで何も返ってこないことを確認してください。
$ env | grep DOCKER
もしDockerToolboxがインストールされているのに、Docker for Macをインストールすると、、、
Docker for Macが
docker
とdocker-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
をすると、クライアントとサーバーのバージョンが分かります。