docker
Conoha
docker-machine

ConoHaでDocker Machineがうまく使えなかったのでなんとかした話

More than 1 year has passed since last update.

概要(TL;DR)

docker-machine createでSSHが延々とコケ続けるときは、docker-machine provision マシン名を試せ

はじめに

ConoHaでDocker Machineを使うの記事を読んで、よっしゃ俺も使ったるで!と意気込んでやったものの、いろいろコケるコケる。
openstackドライバを経由して作成すると必ずSSHで死ぬので、ConoHaでインスタンスを手動で作ってdockerホストにしてからgenericドライバで接続なんていう、わりと不毛なことをやるしか方法はないのか、、、とずっと困っていたところでした。

やり方

詳しいやり方は上記記事に書いてありますが、改めて手順をおさらいします。

コントロールパネルのAPIから、以下の情報をコピーしておきます。

  • ユーザー名(APIユーザーのgcnuで始まるやつ) テナント名とは微妙に違うので注意
  • テナントID
  • APIパスワード
  • エンドポイントのURL(https://identity.tyo1.conoha.io/v2.0)
  • リージョン名(今回は東京なのでtyo1)

以下のような環境変数の形に成形。(私はコンテナを複数使う可能性があったのでdirenvを使って.envrcに登録しました!)

export OS_USERNAME=gncu00000000
export OS_TENANT_ID=XXXXXXXXXXXXXXXXXXXXXXX
export OS_PASSWORD=Password123!
export OS_AUTH_URL=https://identity.tyo1.conoha.io/v2.0
export OS_REGION_NAME=tyo1

.envrcを保存したディレクトリにて、docker-machineの以下コマンドを叩きました。
2017年1月現在のフレーバーリスト

docker-machine create -d openstack --openstack-flavor-name g-2gb  --openstack-image-name vmi-ubuntu-16.04-amd64-unified   --openstack-sec-groups "default,gncs-ipv4-all" test
$ docker-machine create -d openstack --openstack-flavor-name g-2gb  --openstack-image-name vmi-ubuntu-16.04-amd64-unified   --openstack-sec-groups "default,gncs-ipv4-all" test
Running pre-create checks...
Creating machine...
(test) 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)...
Error creating machine: Error running provisioning: Something went wrong running an SSH command!
command : sudo apt-get update
err     : exit status 100
output  : E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/
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?

なんか出た!!!
何度やってもずっとこの状態が直らないのでいろいろ調査。

https://docs.docker.com/machine/reference/provision/

docker-machine provision test と実施したらうまくいった・・・・
長かった