※2015/08/29 追記
現在DockerToolboxでVirtualBoxも同時にインストールすると最新の5.0.2がインストールされますが
このバージョンがDockerMachineと相性が悪く、VMが起動しないという罠があります。
https://github.com/docker/machine/issues/1716
VirtualBoxのバージョンを5.0.0に下げるか、
こちらから次期テストバージョンの5.0.3をインストールしましょう。
DockerToolbox
Docker1.8リリースと同時に DockerToolbox というものが公開された。
https://www.docker.com/toolbox
要するに、Dockerまわりの環境を全部入りしたインストーラ。
2015/8/14 時点では以下のツールが同梱されている。
- Docker クライアント
- Docker Machine(Docker入りVM操作ツール)
- Docker Compose(Docker複数コンテナ連携管理)(※Macのみ)
- Docker Kitematic(Dockerコンテナ用GUI)
- VirtualBox
良い機会なので、boot2dockerを完全に止めて
こちらのツールに寄せることにした。
boot2dockerの代替としては、docker-machineを利用する。
既存環境のアンインストール
コマンドツール系は干渉すると嫌なので予め削除しておくことにした。
消すのは以下のツール。
VirtualBoxはとりあえずそのまま残しておく。
- docker クライアント
- docker-compose(fig)
- docker-machine
# 消す
brew uninstall —force docker
brew uninstall —force docker-compose
brew uninstall —force docker-machine
# 以下のコマンドでゴミが残っていないか確認。残ってたら手動で問答無用に削除
which docker-compose
which fig
which docker-machine
which docker
Docker Toolboxでインストール
サイト にダウンロードリンクがあるので
ダウンロードしたらそのまま実行してインストーラの起動。
あとは普通に進めれば良い。
途中、既存のboot2dockerのVMをマイグレーションするかどうか聞かれたので「Migrate」にしといた。
特にハマることなく移行することが出来た。
既存のイメージは残したままDockerバージョンも最新にしてくれるのでだいぶ良い。
Docker MachineのVM名は default
で作られるようである。
(ちなみにDockerMachineでも、isoはboot2docker.isoを利用している)
Docker MachineでVM起動
おそらく、インストーラで入れた直後はVM起動されているが
Macを再起動した後などはboot2dockerと同様に手動で起動する必要がある。
以下のコマンドで、VM起動とDocker周りの環境変数を設定すれば
あとは今までと同様に利用することができる。
# docker machineで起動コマンド + 環境変数設定 (&& でつなげると何故か無応答になる…
$ docker-machine start default
$ eval "$(docker-machine env default)"
# 上記は、boot2docker時代の以下のコマンドと同じことをしている
$ boot2docker up
$ $(boot2docker shellinit)
bashrcなどに以下のif文を入れておくと、
コンソールOpen時にVMが起動されていれば自動で環境変数を設定してくれるので楽。
# docker-machine
if [ "`docker-machine status default`" = "Running" ]; then
eval "$(docker-machine env default)"
fi
DockerToolboxアップグレード時
Docker本体がバージョンアップした時、DockerToolbox自体もアップグレードされるはず。
その場合、上記インストーラを利用すればツール系はそのままアップグレードされる。
ただしVMは更新されないので、DockerToolbox更新後に以下のコマンドを実行する必要がある。
docker-machine upgrade default
boot2docker時代は一度VMをdeleteする必要があったが、
DockerToolboxを利用するとupgradeだけで済むので既存のイメージは残したままアップデートできる。嬉しい。
まとめ
おそらく、今後Dockerのエコシステムを簡単に利用するためにも
DockerToolboxで今のうちに移行しておくのは良いことだと思います。
どんどん乗っかって楽していきましょう〜
ps.
YAPCでちょろっとこの辺りのことも話すかもしれませんので、興味ある方はぜひお越しください〜