docker将在三个位置生成网络子网。
- 默认桥
- 用户生成的桥接网络
- 群体模式生成的覆盖网络
对于默认的网桥(称为“网桥”),您可以在文件中指定BIP(我相信这是网桥IP;请确保它是主机IP,而不是网络IP)daemon.json
。对于用户生成的网桥网络,您可以定义一个子网池以供选择(假设用户未手动指定子网)。对于这两个,您/etc/docker/daemon.json
将看起来像:
{
"bip": "10.200.0.1/24",
"default-address-pools":[
{"base":"10.201.0.0/16","size":24},
{"base":"10.202.0.0/16","size":24}
]
}
上面的每个地址池设置都定义了CIDR范围和要从该范围分配的子网的大小。因此,以上定义了两个B类范围,它们被分配为C类网络(/ 24)。对于默认地址池,您至少需要18.06。您将需要重新加载docker守护程序才能应用此更改(systemctl reload docker
)。而且此更改只会修改新创建的用户网络,因此您需要停止容器并删除错误范围内的现有网络。
在18.09中,Docker添加了为群集模式生成的覆盖网络指定地址范围的功能。现在只能在创建群集时完成此操作,希望将来会进行更新以允许docker swarm update
调整以下池:
$ docker swarm init \
--default-addr-pool 10.202.0.0/16 \
--default-addr-pool 10.203.0.0/16 \
--default-addr-pool-mask-length 24