Dockerを立ち上げたいがホストOSのルーティングと衝突して上がらない件

背景

Scientific Linux 7.2 で、Dockerを立ち上げたときにエラーが出て上がらなかった。問題と解決。

エラーメッセージ

# docker daemon --debug 最後の行に以下のもの。

FATA[0001] Error starting daemon: Error initializing network controller: Error creating default "bridge" network: failed to allocate gateway (192.168.17.0): Address already in use

解決方法

(すでに解決して消えてしまったのでうろ覚えだが)もうちょっと前に 192.168.0.0/16のネットワークが割り当てられないみたいなエラーが出ていた。 ホストOSですでにそのネットワークに対してルーティングが入っていてDockerに割り当てることができなかった。Dockerはデフォルトでこのネットワークを使おうとする。指定したければ --bip=CIDR で指定すればよい。

172.16.0.0/12 もホストでルーティング入ってしまっていたが、使わないのでいったん落とす。

# ip route del 172.16.0.0/12 
# docker daemon --debug -s overlay --bip=172.16.1.1/24

Bridge IPを指定してやる。ここで、どうもIPはdocker0というインターフェースに使うようで、それ経由でDocker界に疎通するっぽい。なので、ネットワークアドレスを指定するとこれまた割り当てられないよ!というエラーがでる。 参考までに、docker0インターフェース。

$ ifconfig
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.1.1  netmask 255.255.255.0  broadcast 0.0.0.0