これなんだ
MacでDocker Machineはじめた際に詰まったエラーの解決策の一つです。
エラー内容: Error creating machine: Error in driver during machine creation: Maximum number of retries (5) exceeded
環境
MacBook Pro (Retina, 13-inch, Mid 2014)
VirtualBox 5.0.8r103449
とりあえずドキュメント通りにやる
チュートリアル通りDocker ToolboxのMac版を入れる
https://www.docker.com/docker-toolbox
マシン作ってみるがSSHで接続できないとエラーが出る
$ docker-machine -D create --driver virtualbox dev
|
| (略)
|
(dev) DBG | Getting to WaitForSSH function...
(dev) DBG | Using SSH client type: external
(dev) DBG | About to run SSH command:
(dev) DBG | exit 0
(dev) DBG | SSH cmd err, output: exit status 255:
(dev) DBG | Error getting ssh command 'exit 0' : Something went wrong running an SSH command!
(dev) DBG | command : exit 0
(dev) DBG | err : exit status 255
(dev) DBG | output :
|
| (略)
|
Error creating machine: Error in driver during machine creation: Maximum number of retries (5) exceeded
Docker Quickstart Terminal.appを起動してみる
そもそもDocker Quickstart Terminal.appでも起動しないことがわかった
起動しないというかSSHに繋げないだけでマシンが立っている
調査
SSHでどう繋いでるか確認
$ docker-machine -D ssh dev
|
| (略)
|
&{/usr/bin/ssh [/usr/bin/ssh -o PasswordAuthentication=no -o IdentitiesOnly=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=quiet -o ConnectionAttempts=3 -o ConnectTimeout=10 -o ControlMaster=no -o ControlPath=no docker@127.0.0.1 -i ~/.docker/machine/machines/dev/id_rsa -p 22]
|
| (略)
|
exit status 255
繋がらないので普通にSSHコマンド叩いてみる
$ /usr/bin/ssh -o PasswordAuthentication=no -o IdentitiesOnly=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=quiet -o ConnectionAttempts=3 -o ConnectTimeout=10 -o ControlMaster=no -o ControlPath=no docker@127.0.0.1 -i ~/.docker/machine/machines/dev/id_rsa -p 22
createした時のログを見直した
(dev) DBG | Forwarding(0)="ssh,tcp,127.0.0.1,62910,,22"
22じゃなくて62910?
指定されてるPORTでSSHしてみる
$ /usr/bin/ssh -o PasswordAuthentication=no -o IdentitiesOnly=yes -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -o LogLevel=quiet -o ConnectionAttempts=3 -o ConnectTimeout=10 -o ControlMaster=no -o ControlPath=no docker@127.0.0.1 -i ~/.docker/machine/machines/dev/id_rsa -p 62910
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.9.0, build master : 16e4a2a - Tue Nov 3 19:49:22 UTC 2015
Docker version 1.9.0, build 76d6bc9
docker@boot2docker:~$
繋がった
接続情報の確認
$ docker-machine inspect dev
|
| (略)
|
"SSHPort": 0,
|
| (略)
|
それはおかしいので62910変更してみる
$ vim ~/.docker/machine/machines/dev/config.json
再度確認
docker-machine inspect dev
|
| (略)
|
"SSHPort": 0,
|
| (略)
|
反映されない
VirtualBox ?
VirtualBoxなのかなぁと再インストールしたりしてもダメだった。
解決方法
ネットワーク周りだと当たりつけてvboxnetの削除(自分の場合は6まであった)
$ VBoxManage list hostonlyifs | grep -e '^Name'
Name: vboxnet0
Name: vboxnet1
Name: vboxnet2
Name: vboxnet3
Name: vboxnet4
Name: vboxnet5
Name: vboxnet6
$ VBoxManage hostonlyif remove vboxnet0
$ VBoxManage hostonlyif remove vboxnet1
$ VBoxManage hostonlyif remove vboxnet2
$ VBoxManage hostonlyif remove vboxnet3
$ VBoxManage hostonlyif remove vboxnet4
$ VBoxManage hostonlyif remove vboxnet5
$ VBoxManage hostonlyif remove vboxnet6
再度挑戦
$ docker-machine create --driver virtualbox dev
Running pre-create checks...
Creating machine...
Waiting for machine to be running, this may take a few minutes...
Machine is running, waiting for SSH to be available...
Detecting operating system of created instance...
Provisioning created instance...
^[^[Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
To see how to connect Docker to this machine, run: docker-machine env dev
$ docker-machine ssh dev
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
\ \ __/
\____\_______/
_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.9.0, build master : 16e4a2a - Tue Nov 3 19:49:22 UTC 2015
Docker version 1.9.0, build 76d6bc9
docker@dev:~$
無事繋がりました。
そもそもvboxnetの何がいけなかったか
その辺りはしっかり調査はできてません。
ただ、以前からVagrantを結構使っていたため過去に作ったVagrantのIPとDocker Machineとバッティングしたのがきっかけな気がします。
詳しくはこの辺りを。
https://github.com/docker/machine/issues/1031
まとめ
正確にはわかってないのですが、多分vboxnetを調整すれば解決する気がしてます。