Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Networking 如何更改Docker默认子网大小?_Networking_Docker_Docker Compose - Fatal编程技术网

Networking 如何更改Docker默认子网大小?

Networking 如何更改Docker默认子网大小?,networking,docker,docker-compose,Networking,Docker,Docker Compose,我想知道在创建没有任何参数的网络时,是否有任何方法可以影响默认子网大小和使用的地址池 重现问题的步骤: 1) 使用Docker获得一个新的虚拟机(我的例子是Ubuntu 16.04,Docker 1.12.3) 2) 尝试创建50个网络: for i in {1..50}; do docker network create net-$i; done 在某个时候,您将开始出现错误 3) 请参见结果: for i in $(docker network ls -q); do docker ne

我想知道在创建没有任何参数的网络时,是否有任何方法可以影响默认子网大小和使用的地址池

重现问题的步骤: 1) 使用Docker获得一个新的虚拟机(我的例子是Ubuntu 16.04,Docker 1.12.3) 2) 尝试创建50个网络:

  for i in {1..50}; do docker network create net-$i; done
在某个时候,您将开始出现错误 3) 请参见结果:

for i in $(docker network ls -q); do docker network inspect --format='{{.Name}} {{.IPAM.Config}}' $i; done
输出如下所示:

net-1 [{172.18.0.0/16  172.18.0.1/16 map[]}]
net-2 [{172.19.0.0/16  172.19.0.1/16 map[]}]
net-3 [{172.20.0.0/16  172.20.0.1/16 map[]}]
net-4 [{172.21.0.0/16  172.21.0.1/16 map[]}]
net-5 [{172.22.0.0/16  172.22.0.1/16 map[]}]
net-6 [{172.23.0.0/16  172.23.0.1/16 map[]}]
net-7 [{172.24.0.0/16  172.24.0.1/16 map[]}]
net-8 [{172.25.0.0/16  172.25.0.1/16 map[]}]
net-9 [{172.26.0.0/16  172.26.0.1/16 map[]}]
net-10 [{172.27.0.0/16  172.27.0.1/16 map[]}]
net-11 [{172.28.0.0/16  172.28.0.1/16 map[]}]
net-12 [{172.29.0.0/16  172.29.0.1/16 map[]}]
net-13 [{172.30.0.0/16  172.30.0.1/16 map[]}]
net-14 [{172.31.0.0/16  172.31.0.1/16 map[]}]
net-15 [{192.168.0.0/20  192.168.0.1/20 map[]}]
net-16 [{192.168.16.0/20  192.168.16.1/20 map[]}]
net-17 [{192.168.32.0/20  192.168.32.1/20 map[]}]
net-18 [{192.168.48.0/20  192.168.48.1/20 map[]}]
net-19 [{192.168.64.0/20  192.168.64.1/20 map[]}]
net-20 [{192.168.80.0/20  192.168.80.1/20 map[]}]
net-21 [{192.168.96.0/20  192.168.96.1/20 map[]}]
net-22 [{192.168.112.0/20  192.168.112.1/20 map[]}]
net-23 [{192.168.128.0/20  192.168.128.1/20 map[]}]
net-24 [{192.168.144.0/20  192.168.144.1/20 map[]}]
net-25 [{192.168.160.0/20  192.168.160.1/20 map[]}]
net-26 [{192.168.176.0/20  192.168.176.1/20 map[]}]
net-27 [{192.168.192.0/20  192.168.192.1/20 map[]}]
net-28 [{192.168.208.0/20  192.168.208.1/20 map[]}]
net-29 [{192.168.224.0/20  192.168.224.1/20 map[]}]
net-30 [{192.168.240.0/20  192.168.240.1/20 map[]}]
因此,Docker使用RFC1918网络172.16/12和192.168/16,网络掩码将两个网络划分为16个子网

我想知道是否有任何方法可以影响这种行为。
我在CI管道中使用docker compose部署应用程序,我强烈希望避免docker-compose.yml文件中的硬编码网络,因为这会破坏它的可移植性。

看起来它将在
docker ce
v18.06
登陆时可用,您可以使用以下行编辑
/etc/docker/daemon.json
守护程序设置:

{
“默认地址池”:[
{“base”:“172.80.0.0/16”,“size:24},{“base”:“172.90.0.0/16”,“size:24}”
]
}


有关更多信息,请参阅。

请参阅下的
ipam
部分。这可能会有帮助。这正是我想要避免的,因为它使撰写文件变得不可移植。我希望有一些Docker守护程序选项,比如这里:它可以更改Docker 0的IP地址,可以更改容器IP的池,但不能更改已创建网络的池。可以说,在“请愿书”上签名。仅花了1.5年的时间来实施,感谢通知:)请注意,只有172.16.0.0/12(范围172.16.0.0至172.31.0.0)可供私人分配。因此,在尝试与合法的公共IP地址通信时,您的示例将导致难以诊断的问题。