話題の記事

Mac OSX向けDocker 1.8アップグレードガイド – Docker Toolboxの導入

2015.08.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ども、大瀧です。 先日Dockerバージョン1.8が公開されました。これに伴い、Mac OSXでのDockerをデプロイする標準ツールがBoot2DockerからDocker Toolboxに変更になりました。今回はその辺りを踏まえて、Mac OSXで既にDockerを使っている方向けにDocker ToolboxおよびDockerバージョン1.8へのアップグレード手順をご紹介します。

検証環境、バージョン

  • OS : Mac OS X Yosemite
  • Docker : バージョン1.8.1
  • Docker Toolbox : バージョン1.8.1

Docker Toolboxとは

Docker Toolboxとは、開発環境でDockerを実行するための関連ツールを含めたインストーラです。Toolboxをインストールすると以下のソフトウェアが一括で入ります。

  • Docker Client
  • Docker Machine : Docker Serverのデプロイツール
  • Docker Compose : Dockerコンテナのオーケストレーションツール
  • Docker Kitematic : Dockerコンテナ管理のGUI
  • VirtualBox (Docker Serverを実行するVM付き)

詳細は以下のブログ記事およびドキュメントが詳しいです。

アップグレード手順

では、既に旧バージョンのBoot2Dockerがインストールされている前提で、アップグレード手順を見ていきます。まずは、Docker ToolboxのインストーラをToolboxのWebページにある[Download(Mac)]のリンクからダウンロード、実行します。Boot2Dockerの事前のアンインストールは特に不要で、Bood2Docker VMにある既存のDockerコンテナ、イメージは新VMに移行できます。インストーラの画面が表示されたらウィザードの通りに進めていきます。

docker1801

途中、以下の移行のダイアログが表示されるので、Boot2Docker VMから移行したい場合は[Migrate]をクリックします。

docker1802

しばらく待ち、以下のダイアログが表示されたら移行完了です。Docker Machine管理下のdefaultマシンに移行されたことを覚えておきましょう。

docker1803

その後、Docker Toolboxのインストールが完了するとFinderが起動し、[アプリケーション] > [Docker]以下が表示されます。[Docker Quickstart Terminal]は、Docker Machine管理下のdefaultマシンのDocker Serverにアクセスするように初期設定されたTerminalアプリケーションが起動するショートカット、[Kinematic(Beta)]はDockerコンテナをGUIで管理するアプリケーションです。

docker1804

ここでは、[Docker Quickstart Terminal]をクリックしてターミナルを開き、docker versionを実行してみます。

                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/


docker is configured to use the default machine with IP 192.168.99.100
For help getting started, check out the docs at https://docs.docker.com

bash-3.2$ docker version
Client:
 Version:      1.8.1
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   d12ea79
 Built:        Thu Aug 13 02:49:29 UTC 2015
 OS/Arch:      darwin/amd64

Server:
 Version:      1.8.1
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   d12ea79
 Built:        Thu Aug 13 02:49:29 UTC 2015
 OS/Arch:      linux/amd64
bash-3.2$

バージョン1.8.1が動いていることがわかりますね。今回の環境では、Boot2DockerでいくつかのDockerイメージを作成していたので、それらが移行されているか確認してみます。

bash-3.2$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
httpd               latest              a2ceb9245c63        4 weeks ago         162 MB
nginx               latest              319d2015d149        8 weeks ago         132.8 MB
ubuntu              14.04               6d4946999d4f        8 weeks ago         188.3 MB
dajobe/nghttpx      latest              1a8e94ed1700        11 weeks ago        149.2 MB

きちんと引き継がれていますね!VirtualBoxのVM一覧を確認してみると、元々のBoot2DockerのVM(boot2docker-vm)はそのまま残っていて電源オフになっており、Docker Machine配下の新しいVMはVM名「default」として実行中ということがわかります。

docker1805

boot2dockerコマンドの読み替え

Boot2Dockerでは、Boot2DockerのVMをコントロールするboot2dockerコマンドがありました。同様の操作をdocker-machineコマンドで読み替えて利用することになります。使い方はboot2dockerとほとんど一緒ですが、マシン名を引数に入れる必要があるため、マシン名のdefaultを指定することを覚えておきましょう。

マシンの一覧

bash-3.2$ docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM
default   *        virtualbox   Running   tcp://192.168.99.100:2376
bash-3.2$

マシンの停止

bash-3.2$ docker-machine stop default
bash-3.2$ docker-machine status default
Stopped
bash-3.2$

マシンの起動

bash-3.2$ docker-machine start default
Starting VM...
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
$ docker-machine status default
Running
bash-3.2$

マシンへのログイン

bash-3.2$ docker-machine ssh default
                        ##         .
                  ## ## ##        ==
               ## ## ## ## ##    ===
           /"""""""""""""""""\___/ ===
      ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
           \______ o           __/
             \    \         __/
              \____\_______/
 _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.8.1, build master : 7f12e95 - Thu Aug 13 03:24:56 UTC 2015
Docker version 1.8.1, build d12ea79

内部ではBoot2DockerのLinux VMが引き続き利用されていることがわかりますね。

好みの端末でdockerコマンドを実行する

上述の[Docker Quickstart Terminal]ショートカットからは、既定でOSX標準のターミナルアプリケーションで端末が起動します。ただ、iTerm2など馴染みの端末でコマンド操作したいこともあるでしょう。[Docker Quickstart Terminal]で実行される初期化スクリプトはシェルスクリプトとして/Applications/Docker/Docker Quickstart Terminal.app/Contents/Resources/Scripts/start.shに記述されているため、このスクリプトが参考になります。docker-machine env <VM名>の出力をログインスクリプトに追加する形が良いでしょう。

# .bash_profileの末尾などに追加

eval "$(docker-machine env default)"

まとめ

Dockerバージョン1.8をOSXで利用するための、Docker Toolboxのセットアップ手順をご紹介しました。今回は紹介していないいくつかのツールもバンドルインストールされるようになっていますので、それらも試しに触ってみていただくのも良いでしょう。 fluentdのLogging Driverも追加された、新バージョンのDockerをしゃぶりつくりましょう!