Posted at

boot2dockerを利用したIPを変えたい

More than 3 years have passed since last update.


ぽえむ

あるイントラネット内、 re:dashのDocker版をインストールし、DB接続して使おうとした。

しかし、DB側のIP帯が、 172.17.xxx.xxx

boot2dockerのブリッジ接続で利用しているデフォルトIP帯。

172.17.0.0/16


docker-network-bridge

$ docker network inspect bridge

[
{
"Name": "bridge",
"Id": "37262f6715263e87db026d5501a08a3c24db5243e1235696d19f762ac2bac69a",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
},
"Internal": false,
"Containers": {},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
},
"Labels": {}
}
]

完全にかぶってますなぁ...


環境

docker-machine -> Virtualbox -> docker-compose -> re:dash


解決策


--fixed-cidr, --bip を追加する

ただし、Linuxのやり方と違うので注意。Linuxのばっかり載ってるんですわ。ひどいですわ。

boot2dockerが特殊なのだろうなぁ。

Linux版の参考: http://knowledge.sakura.ad.jp/knowledge/4786/

$ docker-machine ssh redash

$ cat /var/lib/boot2docker/profile
EXTRA_ARGS='
--label provider=virtualbox

'

$ vi /var/lib/boot2docker/profile
EXTRA_ARGS='
--label provider=virtualbox
--fixed-cidr=192.168.100.0/24
--bip=192.168.100.1/24
'


以下、ボツ案


docker network で頑張ろうとしたパターン


docker-network

$ docker network ls

NETWORK ID NAME DRIVER SCOPE
dd738187eba6 bridge bridge local ←既にあるbridge
048888e14045 host host local
a628ca4f5158 none null local


既にある bridge のIP帯変えよう

変更不可


既にある bridge 消そう

$ docker network rm bridge

Error response from daemon: bridge is a pre-defined network and cannot be removed

消せない


新しいネットワーク作ってそちらを通そう

$ docker network create --driver bridge --subnet 192.168.101.0/24 --gateway=192.168.101.1 \

-o "com.docker.network.bridge.enable_icc"="true" \
-o "com.docker.network.bridge.enable_ip_masquerade"="true" \
-o "com.docker.network.bridge.host_binding_ipv4"="0.0.0.0" \
-o "com.docker.network.driver.mtu"="1500" \
redash


docker-compose.yml

version: '2'

services:
xxxxxx
networks:
default:
external:
name: redash

同じIP帯が消えないので、結局意味ない。(気づくの遅い)


参考

http://superbrothers.hatenablog.com/entry/2014/06/19/234210

https://github.com/boot2docker/boot2docker/blob/master/doc/FAQ.md

Docker♡コンテナ