fixture.jp/blog

Dockerが公式にOS Xに対応したので試してみた

boot2docker

First, install the Docker binary which will forward all commands to a remote docker daemon Second, install Boot2Docker, which is a super-lightweight Linux VM capable of running a docker daemon on your Mac with the smallest possible overhead. Currently it occupies 24MB on disk and boots in less than 10 seconds.

とのこと。まずboot2dockerについて。これはなんだ、と。

  • これまでMacでDockerを使う場合はVirtualBoxなりVMware FusionなりでUbuntuとかを動かして、その中でDockerを使う必要があった
  • しかしそれでは毎回最初の一歩が重くてDockerのメリットが活かせないし、ネイティブにDockerを使えたほうが何かと便利
  • そこでboot2dockerというものが考案された
  • これは厳密にはソフトウェアではなく、Dockerを動かすことに特化したTiny Core Linuxベースのisoイメージと、それをインストールしたVirtualBoxをコントロールするシェルスクリプトの組み合わせ
  • boot2dockerが起動している状態であれば、OS XのターミナルからDockerを直接操作できる(Docker 0.8になって公式にOS Xをサポートした、というのはこの部分かと)
  • これについてさらっとこのページの一番下(About the way Docker works on Mac OS X)に書いてある。MacにはLXCとかがないからねーということで。:Requirements and Installation on Mac OS X 10.6 Snow Leopard - Docker Documentation

という理解でいいのでしょうか?たぶん合ってる。要はboot2docker stopするとTerminalからdockerコマンド使えない。その関係性をdaemonとclientと言ってる。

インストール手順

Oracle VirtualBox 必須。ここからDL & インストロール。Downloads – Oracle VM VirtualBox

ドキュメントではgithubからcurlしてるけど、tapを追加すればhomebrewで入れられる。

$ brew tap homebrew/binary
$ brew install docker boot2docker
$ docker -v
Docker version 0.8.0, build cc3a8c8

これも必須(docker - VM間の通信用)

export DOCKER_HOST=tcp://

Tiny Core Linuxのisoを格納するディレクトリを適当に作って適当に移動

$ cd && mkdir docker && cd docker

VirtualBox上にディスクイメージを準備・起動。initでisoがDLされる。.vmdkも後でここにできる。

$ boot2docker init
$ boot2docker up

確認

$ boot2docker status
 [2014-02-09 00:39:35] boot2docker-vm is running.

これでTerminalからdockerが使える。CentOSをpullして

$ docker pull centos

コンテナに入る

$ docker run -i -t centos /bin/bash

あとは普通にdocker。なんていうか全体的にシンプルかつ最善を尽くした感じの良いソリューションで素敵。

それにしてもコンテナ型VMの速度にはびっくりする。昔OpenVZ好きじゃなかったけど、LXCはLinuxカーネルにも取り込まれたり、もうすぐ1.0も出たりと期待できる。今のところプロダクション環境より検証とかテストに向いてるイメージ。