user icon

ConoHaでDocker Machine、2016年夏

Docker for Mac からベータが取れて久しいですが、インストールしたまま放置状態でしたので勉強中です。

とりいそぎ手元の開発環境構築で使いたいのですが、最近よく開発用に利用している ConoHa で Docker Machine していました。なぜか。

Docker for Mac vs. Docker Toolbox を読みますと、Docker for Mac を手元で使う分には Docker Machine を意識する必要すらなくなっているようですが、docker-machineコマンドも含まれてはいたので調べていたらそういうことになっていたのでした。

docker-machineコマンドでConoHa上にDockerのHostをVMレベルからcreateしたりstopしたりrmしたりできるようになったわけですがいまのところあまり使い道が思いつきません。ConoHaだとVM(サーバー)止めてても課金が止まらないんですよねぇ。

検証用や確認用に一時的にHostを立ち上げて(create)終わったらすぐ消す(rm)、とかでしょうか。

せっかくですし、すぐに忘れてしまいそうなので引っかかった箇所のメモを残しておこうと思います。

基本的に ConoHaでDocker Machineを使う そのままなのですが、一部変更しないとうまくいかなかった箇所があります。

$ 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" \
  conoha-docker-host
Running pre-create checks...
Creating machine...
(conoha-docker-host) Creating machine...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with ubuntu(upstart)...
Error creating machine: Error running provisioning: Something went wrong running an SSH command!
command : DEBIAN_FRONTEND=noninteractive sudo -E apt-get install -y -o Dpkg::Options::="--force-confnew" curl
err     : exit status 100
output  : E: Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?

残念、provisioningでエラー発生です。調べた所 Digital Ocean でも似た状況が発生しているようです。

Digital ocean driver create command fails on new ubuntu 16.04 LTS image

「Digital Ocean のせいだから課題はクローズだ!」という状況な模様。

イメージが原因?と試しに vmi-ubuntu-14.04-amd64 から vmi-ubuntu-16.04-amd64 にイメージを変更してみました。

$ docker-machine create \
  -d openstack \
  --openstack-flavor-name g-1gb \
  --openstack-image-name vmi-ubuntu-16.04-amd64 \
  --openstack-sec-groups "default,gncs-ipv4-all" \
  conoha-docker-host
Running pre-create checks...
Creating machine...
(conoha-docker-host) Creating machine...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with ubuntu(systemd)...
Installing Docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env conoha-docker-host

完走Σ(・∀・;)

以前はうまく動いていたであろうバージョンのイメージでは失敗しますが、現在最新バージョンのイメージではうまくいくようです。原因について深くは追っていませんが、再現性はあり。セキュリティフィックスなどで元イメージに手がはいると状況はまた変わりそうです。

ConoHaでDocker Machine、2016年夏の状況は以上です。


では軽く Docker Machine の動きを。

docker-machine create 後のConoHaコントロールパネル

createした状態。133-130-109-78がcreateされたHostです。

$ docker-machine ls
NAME                 ACTIVE   DRIVER      STATE     URL                         SWARM   DOCKER    ERRORS
conoha-docker-host   -        openstack   Running   tcp://133.130.109.78:2376           v1.12.0   

ほらね?(もう削除しているのでIPなどそのまま出していきます)

次に必要な環境変数を確認。

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

Run this command to configure your shell とのことですので教えに従いましょう。

$ eval $(docker-machine env conoha-docker-host)

以降、このShellでdockerコマンドを使うとConoHa上のHostへの操作となります。ローカルがHostの場合と同様の操作で扱えますが、-vオプションでローカルのディレクトリをバインドなどは当然できません(わかっていながら一応試したりした)。

Hostにsshするには

$ docker-machine ssh conoha-docker-host
Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-31-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

18 packages can be updated.
10 updates are security updates.

使い捨ての場合はあまりsshする必要もなさそうですが、そのまま運用する際などはHost側の設定調整などで必要になりそうです。

scpも出来ます。

$ docker-machine scp conoha-docker-host:/etc/passwd .
passwd                                                                                                                    100% 1551     1.5KB/s   00:00    

Doker周りについては以下のようにsshしたりしなくてもアップグレード可能。

$ docker-machine upgrade conoha-docker-host
Waiting for SSH to be available...
Detecting the provisioner...
Upgrading docker...
Restarting docker...

停止(stop)、開始(start)、再起動(restart)はご想像のとおりかと思うので省略。

docker-machine stop conoha-docker-host 後のConoHaコントロールパネル

上記画像は stop したときのConoHaコントーロールパネルです。

最後に(-fをつけて強制)rmしてHost(133-130-109-78)を削除して終了。

$ docker-machine rm -f conoha-docker-host
About to remove conoha-docker-host
(conoha-docker-host) Deleting OpenStack instance...
Successfully removed conoha-docker-host

docker-machine rm -f conoha-docker-host 後のConoHaコントロールパネル

Facebooktwitterlinkedintumblrmail

Tags: ,

名前
E-mail
URL
コメント

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)