ConoHaでDocker Machineを使う

  • 47
    いいね
  • 2
    コメント
この記事は最終更新日から1年以上が経過しています。

Docker MachineはDockerホストをローカルコンピュータやクラウドプロバイダー上に手軽に構築するためのツールです。普通に仮想マシンを立ててaptなりyumなりでDockerをインストールしても良いのですが、Docker Machineを使うと、インスタンスの作成、破棄や環境変数の設定などを簡単に行えるのがメリットです。Vagrantみたいな感じですね。

Docker Machine

Docker Machineにはプラットフォームに対応しています。ドライバも多いです。

https://github.com/docker/machine/tree/master/drivers

OpenStackドライバがあるので、これをConoHaで動かしてみましたが、インスタンスのIP取得部分で問題があったので、修正版を作ってみました。これでConoHaでDocker遊びがしやすくなりますね!

修正版 hironobu-s/machine

修正点

ConoHaはIPv4、IPv6のデュアルスタック環境なのですが、Docker MachineのOpenStackドライバはこれを考慮せず、インスタンスに対してIPv6で接続しようとします。

修正版は--openstack-ip-versionと言うオプションが追加されていて、IPバージョンを選択できるようになっています。また、指定が無い場合はIPv4アドレスを優先して使うようになっています。

本家にPRを送ってあるので、いずれマージしてもらえると思います。
https://github.com/docker/machine/pull/1933

マージしてもらえました。次のリリースで入ると思います。
レビューしてくれたのはVagrantのOpenStackドライバーを書いてる方だった。

Version 0.5.0のリリースで取り込んでもらえました。

インストール

オフィシャルの通りにインストールして下さい
https://docs.docker.com/machine/

マシンの作成

認証情報の設定

ConoHaのAPIを使うための認証情報を環境変数に設定します。シェルから以下のコマンドを実行します。認証情報はConoHaコントロールパネルのAPIページにあります。

export OS_USERNAME=[APIユーザー名]
export OS_TENANT_ID=[APIテナントID]
export OS_PASSWORD=[APIパスワード]
export OS_AUTH_URL=https://identity.tyo1.conoha.io/v2.0
export OS_REGION_NAME=tyo1

Dockerホストを作成する

次にホストを作成します。OpenStackドライバには多くのオプションがありますが、とりあえずマシンを立てるなら以下のようにすればOKです。

docker-machine create \
  -d openstack \
  --openstack-flavor-name g-1gb \
  --openstack-image-name vmi-ubuntu-14.04-amd64 \
  --openstack-sec-groups "default,gncs-ipv4-all" \
  test-docker-host
Creating machine...
To see how to connect Docker to this machine, run: docker-machine env test-docker-host

-d はドライバ名
--openstack-flavor-name はConoHaの場合はプラン名
--openstack-image-name はOSイメージ
をそれぞれ指定します。指定できる値は下記です。

flavor-list
image-list

このオプションでは、ConoHaの1GBプランにUbuntu14.04ベースのDockerホストが作成されます。裏側では、インスタンスの作成、インスタンスの起動待ち、apt-get update、dockerのインストール、が自動で行われるので少し時間がかかります。

そして、コントロールパネルを見ると、新しいインスタンスが作成されています。

docker-machin1.png

Dockerホストを使う

docker-machineのenvサブコマンドを使うと、作成したホストを使うための環境変数が表示されます。

$ docker-machine env test-docker-host
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://133.130.***.***:2376"
export DOCKER_CERT_PATH="/home/hiro/.docker/machine/machines/test-docker-host"
export DOCKER_MACHINE_NAME="test-docker-host"
# Run this command to configure your shell:
# eval "$(docker-machine env test-docker-host)"

コメントにあるとおり、最終行を実行すると環境変数がセットされます。

$ eval "$(docker-machine env test-docker-host)"

docker infoコマンドでホストの情報を見てみましょう。

$ docker info
Containers: 0
Images: 0
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 0
 Dirperm1 Supported: true
Execution Driver: native-0.2
Logging Driver: json-file
Kernel Version: 3.16.0-36-generic
Operating System: Ubuntu 14.04.2 LTS
CPUs: 2
Total Memory: 993.7 MiB
Name: test-docker-host
ID: 3OBJ:56EY:OMEI:E5IR:HH2V:35D7:JSQW:6MWA:PSV4:MXYV:E65F:TUMD
WARNING: No swap limit support
Labels:
 provider=openstack

ConoHa上に作成されたホストの情報が表示されました。「provider=openstack」になっていますね! このあとはいつも通りdockerコマンドを使ってpullしたりrunしたりすればOKです。

Dockerホストの管理

docker-machineにはインスタンスを管理するコマンドがあります。いくつか紹介します。

start, stop, rm

それぞれ仮想マシンの起動、停止、削除です。この辺は基本ですね。

docker-machine start test-docker-host
Starting OpenStack instance...           MachineId=6c294adf-8ab1-4042-8341-ae06a0771a38
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
docker-machine stop test-docker-host
Stopping OpenStack instance...           MachineId=6c294adf-8ab1-4042-8341-ae06a0771a38

ssh, scp

dockerホストに直接SSHで接続したり、SCPで直接ファイルコピーできます。

$ docker-machine ssh test-docker-host

ls

マシンの一覧を表示します。今回は1つのホストを作成しましたが、docker-machineは名前を変えれば多くのホストを作成できます。

$ docker-machine ls test-docker-host
NAME               ACTIVE   DRIVER      STATE     URL                          SWARM
test-docker-host   *        openstack   Running   tcp://133.130.***.***:2376

upgrade

ホスト上のDockerのバージョンを更新します。これローカルからできるの便利ですわ。

$ docker-machine upgrade test-docker-host

おわりに

Docker Machineの特徴は、環境を問わずDockerホストを作成できる点です。ConoHaは値段的に個人でも手頃に使えるので、Docker遊びするにはちょうど良いのではないでしょうか。