boot2docker コマンドとサヨナラする

More than 3 years have passed since last update.


目的

docker-machine 0.3.1 と VirtualBox 5.0 と Docker 1.7.1 で boot2docker コマンドを使わずにローカルで docker を使いたい。


環境


  • Mac OS X 10.10.4


docker 1.7.1 をインストール

念のため 1.7.1 に固定してインストール

$ curl -L https://get.docker.com/builds/Darwin/x86_64/docker-1.7.1 > /usr/local/bin/docker


docker-machine 0.3.1 をインストール

0.3.0 ではなく 0.3.1 を導入する事

$ curl -L https://github.com/docker/machine/releases/download/v0.3.1/docker-machine_darwin-amd64 > /usr/local/bin/docker-machine

$ chmod +x /usr/local/bin/docker-machine


virutalbox 5.0 をインストール

https://www.virtualbox.org/wiki/Downloads


docker-machine をローカルで使う

docker-machine を使って boot2docker から脱却する - Qiita

基本的にはこの記事と一緒ですが Digital Ocean ではなく VirtualBox を使用します。

$ docker-machine create --driver virtualbox local

...

名前は local としてみました。

$ docker-machine ls

NAME ACTIVE DRIVER STATE URL SWARM
local virtualbox Stopped

とりあえず起動します

$ docker-machine start local

Starting VM...
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.

ここからがポイントです。docker-machine では複数の docker host を管理出来ます。そこでどのホストに対して docker を接続するのかを環境変数で有効に出来ます。

$ docker-machine env local

export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/nakai/.docker/machine/machines/local"
export DOCKER_MACHINE_NAME="local"
# Run this command to configure your shell:
# eval "$(docker-machine env local)"

まだこの状態で docker version を実行しても docker server (というか host?) に繋がりません。

docker-machine env local で出てきていた eval ... を実行して docker version を打ってみます。

$ eval "$(docker-machine env local)"

$ docker version
Client version: 1.7.1
Client API version: 1.19
Go version (client): go1.4.2
Git commit (client): 786b29d
OS/Arch (client): darwin/amd64
Server version: 1.7.1
Server API version: 1.19
Go version (server): go1.4.2
Git commit (server): 786b29d
OS/Arch (server): linux/amd64

$ docker run -i --rm -t ubuntu:14.04 /bin/bash

Unable to find image 'ubuntu:14.04' locally
14.04: Pulling from ubuntu
83e4dde6b9cf: Pull complete
b670fb0c7ecd: Pull complete
29460ac93442: Pull complete
d2a0ecffe6fa: Already exists
ubuntu:14.04: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Digest: sha256:36de65e14e47b2a9a3d91c9a832899d4c432a00295bd77ced8d5bb6dc2764318
Status: Downloaded newer image for ubuntu:14.04
root@2752470b5927:/#


感想

docker-machine は docker ホストの管理ツールとしても使える。今回はローカルをターゲットとしましたが、クラウド上にも持てます。

今までは boot2docker コマンドのお世話になってたのだけれど、複数環境での環境変数の定義が面倒くさいので docker-machine を活用することにしてみました。

快適です!!!