Help us understand the problem. What is going on with this article?

Windows で docker を動かそうとしたらホストオンリーネットワークが溢れて詰まった

More than 3 years have passed since last update.

はじめに

Jenkins の Docker イメージを Windows で動かしてみたい!と思ってやりはじめたら、VirtualBox のホストオンリーネットワークの設定という思わぬところでつまずいたのでシェアします。

ホストオンリーネットワークの罠

まず Get Started with Docker for Windows に従って、 Docker Tools をインストールして Docker Quickstart Tarminal の上で docker run hello-world まで普通に動くのを確認しました。

が、せっかく docker.exe を直に叩ける用になったので、コマンドプロンプトから docker run hello-world をやりたいと思ったので、次は公式ガイドの Installation on Windows を読んでやろうとしました。

なるほど、まずは docker-machine create <マシン名> -d virtualbox を叩くのか!とおもって、叩いたところこんなエラーが出てしまいました。

WARNING >>>
This machine has been allocated an IP address, but Docker Machine could not
reach it successfully.

SSH for the machine should still work, but connecting to exposed ports, such as
the Docker daemon port (usually <ip>:2376), may not work properly.

You may need to add the route manually, or use another related workaround.

This could be due to a VPN, proxy, or host file configuration issue.

You also might want to clear any VirtualBox host only interfaces you are not using.
Checking connection to Docker...
Error creating machine: Error checking the host: Error checking and/or regenerating the certs: There was an error validating certificates for host "192.168.99.100:2376": dial tcp 192.168.99.100:2376: i/o timeout
You can attempt to regenerate them using 'docker-machine regenerate-certs [name]'.
Be advised that this will trigger a Docker daemon restart which will stop running containers.

作成したマシンは IP を確保できたけれど、 Docker Machine から接続できません。ルートを追加するか、 VirtualBox の使っていないホストオンリーネットワークを消してということでした。

対応

そこで VirtualBox > ファイル > 環境設定 を開いて ネットワーク > ホストオンリーネットワーク を見ると、たくさんホストオンリーネットワークができていました。(画像は整理してしまったあとです)なので、いったんすべて消してみました。そうすると無事 docker-machine create できるようになりました。
image

通常は複数の VM を立ち上げてもホストオンリーネットワークは使いまわされるようなのですが、今回は docker-machine create するたびに新しくホストオンリーネットワークが作成されてしまっていました。おそらくそれらのアダプター同士で IP アドレスがコンフリクトしてしまっていたのだと思います。

既存の issue

この手の issue はいくつか上がっていて docker-machine/issue/2136 でのやりとりが一番分かりやすかったです。

そこでのコメントによると

docker-machine --debug create -d virtualbox default

のように、--debug をつけることでもっと詳細なエラーが見られ、この場合だと、以下の様なエラーメッセージが出るそうです。

Error creating machine: Error in driver during machine creation: VirtualBox is configured with multiple host-only interfaces with the same IP. Please remove all of them but one.

最初にこれが見れたらよかったのに!

おわりに

そのあと docker run をするためには docker-machine env --shell cmd <マシン名> を叩いて、出てきた環境変数を定義する必要があるのを忘れないようにしてください。

この記事は @chiepomme Advent Calender 2015 9日目です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした