Edited at

OSXでDocker Toolbox(1.11)からDocker for Mac(1.12)に移行する方法

More than 3 years have passed since last update.

今までOSXで使っていたDocker 1.11 (Doker Toolbox)を、

Docker 1.12 (Docker for Mac)に切り替えたので方法を残しておこうと思います。


実施手順

私が行ったことは以下の通りです。


  1. Docker公式からDocker for Macのインストール用dmgをDLしてDocker.appをインストール

  2. Docker.appを起動すると、Toolboxの既存のDocker Hostからコンテナやイメージを移行するかを聞かれるので、移行する方を選択する

  3. 以下のスクリプトでToolboxを削除

    https://github.com/docker/toolbox/blob/master/osx/uninstall.sh

    注意 Docker Machineを使っていて残したいものがある場合は "No"を選択すること


  4. /usr/local/bin/ 内の docker関連コマンドが消えてしまったので、
    Docker.appを再起動したら復活

  5. Toolboxでのdocker関連コマンドが /usr/local/bin/docker.backup という感じにリネームされて残っていたので削除


  6. ~/.docker を削除

Docker for Macは、既存のDocker ToolboxのDockerイメージなどを移行してくれるので、気兼ねなくインストールすることができます。

上記の手順で、Step.2 の時点でDocker for MacとToolboxを共存させた状態になり、併用したいのであればこのまま利用してよいようです。

これ以降でのdockerの利用は、今までやっていた eval $(docker-machine env) が不要になり、Dockerコンテナへのアクセスがlocalhostに変わります。

残りの Step.3 以降は Docker Toolbox を削除するための手順です。

uninstall.shは、Docker公式のスクリプトのようです。

このファイルを手元にDLして実行すると関連ファイルが削除されます。

中身は簡単なので実行前に見ておくといいと思います。

ただ、このスクリプトで削除される /usr/local/bin/docker コマンドなどは Docker for Mac と同じ場所だったようで、dockerコマンドなどが使えなくなってしまいました。

どうしようかと思ったものの、Docker.appを一度停止して再度起動したらコマンドが復活しました。

実際には、 /usr/local/bin/docker はシンボリックリンクになっていて、起動時に存在しなかったら再作成してくれるようです。

最後に、Docker.app はどうやら既存のdockerコマンドなどを、docker.backup という名前でリネームして残しておくようになっていたようなので、手動でこれらのファイルを削除しました。

また、~/.dockerフォルダも残っていたので、これを消して完全に綺麗になったと思います。


まとめ

この手順は、あくまで私が試行錯誤をやってみた手順なので、ちゃんと整理すれば簡単になると思います。

実際には試していませんが、おそらく以下が一番シンプルな流れだろうと思います。


  1. uninstall.sh を実行

    このとき、最初に "Remove all Docker Machine VMs?" と言われるので、"No"を選択

    注意 ここで、Docker Machineを削除すると、あとで移行ができなくなると思います

  2. Docker for Macをインストールし、既存イメージなどを移行


  3. docker-machine rm -f default でDocker Machineの環境を削除


  4. default環境だけを使っていたのであれば ~/.docker を削除

    もし、他にも環境を使っている場合は残しておく必要があると思います