更改docker自定义网络的默认子网

时间:2017-05-16 14:01:51

标签: docker docker-compose

我们的内部网络具有为内部用途保留的范围172.20.0.0/16,并且docker默认使用172范围用于其内部网络。我可以通过为守护进程提供bip设置来重置网桥以生存在192.168中:

➜  ~ sudo cat /etc/docker/daemon.json
{
  "bip": "192.168.2.1/24"
}

➜  ~ ifconfig                        
docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
    inet 192.168.2.1  netmask 255.255.255.0  broadcast 0.0.0.0

但是,当通过docker network create创建新的自定义网络或在networks的{​​{1}}部分中定义这些网络时,这些网络仍会在172中创建,从而最终与{{1}发生冲突}:

docker-compose.yaml

我知道我可以为172.20提供子网值,但我更希望在➜ ~ docker network create foo 610fd0b7ccde621f87d40f8bcbed1699b22788b70a75223264bb14f7e63f5a87 ➜ ~ docker network inspect foo | grep Subnet "Subnet": "172.17.0.0/16", ➜ ~ docker network create foo1 d897eab31b2c558517df7fb096fab4af9a4282c286fc9b6bb022be7382d8b4e7 ➜ ~ docker network inspect foo1 | grep Subnet "Subnet": "172.18.0.0/16", 下创建所有这些子网。

如何配置docker network create自动执行此操作?

1 个答案:

答案 0 :(得分:4)

对于发现此问题的任何人。现在有可能。

$ docker -v
Docker version 18.06.0-ce, build 0ffa825

为docker守护程序编辑或创建配置文件:

# nano /etc/docker/daemon.json

添加行:

{
  "default-address-pools":
  [
    {"base":"10.10.0.0/16","size":24}
  ]
}

重新启动dockerd:

# service docker restart

检查结果:

$ docker network create foo
$ docker network inspect foo | grep Subnet
                    "Subnet": "10.10.1.0/24"

它也适用于docker-compose。

您的"bip": "192.168.2.1/24"仅适用于bridge0。这意味着任何不使用--network运行的容器都将使用此默认网络。