boot2dockerの代わりにdocker-machine

表題の通り。以前、どこかで『docker-machineはboot2dockerの代替ではない』といった記述を見かけた気がするのだが…。とりあえず`docker-machine`を試してみる。

■ 環境

  • boot2docker 1.8.0
  • docker-machine 0.3.1
  • Mac OSX (10.10.5)

■ boot2docker

boot2dockerでVMを起動しようとしたところ下記のようなメッセージが出力された。今回のエントリのきっかけである。

$ boot2docker start

  WARNING: The 'boot2docker' command line interface is officially deprecated.

  Please switch to Docker Machine (https://docs.docker.com/machine/) ASAP.

  Docker Toolbox (https://docker.com/toolbox) is the recommended install method.

Waiting for VM and Docker daemon to start...
................oooooooo
Started.
  :
$

`docker-machine`に移行しろ、ということか。`docker-machine`の`help`を見ると、`boot2docker`で起動しているVMに対してもアクションが起こせそうである。しかし折角なのでいちから`docker-machine`でやってみることにする。

まずはboot2dockerで起動していたVMを削除しておく。

$ boot2docker delete

■ docker-machine

そもそものイメージがあまりできていないのだが、docker-machineはboot2dockerのようにDockerサービスを稼働させるVM相当のものを起動・管理させるもの、と自身の中ではイメージしている。その為、Mac上ではVirtualBox等の”driver“を指定する。boot2dockerと同じようなものであるが、boot2dockerはVirtualBox固定であったものが、EC2やAzure、VMware、OpenStack等々を対象にすることができるようだ。

boot2dockerと実質的には変わらないかもしれないが、現状と同じVirtualBoxでやってみる。

$ docker-machine ls
NAME   ACTIVE   DRIVER   STATE   URL   SWARM
$

もちろんこの時点では対象の”machine“は存在しない。`create`で作成するのであろう。試してみる。

$ docker-machine create
  :
You must specify a machine name
$

多くのオプションが設定できるようだが、”machine name“を指定しなければならないようだ。ここでは仮なので”test“で試してみる。

$ docker-machine create test
Creating CA: /Users/withsin/.docker/machine/certs/ca.pem
Creating client certificate: /Users/withsin/.docker/machine/certs/cert.pem
Error creating machine: --url option is required when no driver is selected
You will want to check the provider to make sure the machine and associated resources were properly removed.

provider“を指定する必要があるようだが、`help`を見ると”–driver“を指定すれば良いようである。

$ docker-machine create --driver "virtualbox" test
Image cache does not exist, creating it at /Users/withsin/.docker/machine/cache...
No default boot2docker iso found locally, downloading the latest release...
Downloading https://github.com/boot2docker/boot2docker/releases/download/v1.8.1/boot2docker.iso to /Users/withsin/.docker/machine/cache/boot2docker.iso...
Creating VirtualBox VM...
Creating SSH key...
Starting VirtualBox VM...
Starting VM...
To see how to connect Docker to this machine, run: docker-machine env test

boot2dockerと同じISOを使用するようである。VirtualBoxでVMを稼働させ、同じようにアクセスをするようだ。

$ docker-machine env test
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/withsin/.docker/machine/machines/test"
export DOCKER_MACHINE_NAME="test"
# Run this command to configure your shell:
# eval "$(docker-machine env test)"
$
$ docker-machine ls
NAME ACTIVE DRIVER     STATE   URL                       SWARM
test        virtualbox Running tcp://192.168.99.100:2376

boot2dockerコマンドを今後は利用しないようにしよう。`boot2docker`をクライアントコマンドとして使用しないように削除してしまっても良いのかもしれない。

以上。

■ 関連