当我创建一个新网络时,Docker会使用172.255.255.255(172.17.1.0,172.18.1.0等)创建它。但这可能与外部地址相抵触,因为我网络中的所有机器都有相同的前缀(172.255.255.255)
是否有一种方法可以配置Docker在创建新网络的基本子网地址?
[更新]我正在自动创建和删除网络,因此,我无法设置-subnet选项(因为我不知道使用哪些地址)。我需要Docker动态管理地址池,就像它管理Ingress网络(自动分配和修剪子网)一样。实际上,我需要的只是自定义入口基础地址!
docker 18.06引入--default-address-pool
选项。使用它,您可以指定用户定义的网络默认使用的地址范围,而不是标准172.x
您可以查看已实施和讨论功能的拉动请求以获取更多信息:Moby/29376,Moby/36054,Moby/36396,
您可以将参数作为命令行参数设置为Docker守护程序:
--default-addr-pool
此标志指定全局范围网络的默认子网池。 格式示例是
--default-addr-pool 30.30.0.0/16 --default-addr-pool 40.40.0.0/16
或/etc/docker/daemon.json
:
{
"default-address-pools": [
{"base":"172.80.0.0/16","size":24}
]
}
默认网络命名为桥。这是使用172范围的设置。
您需要做的是创建自己的桥梁网络。
$ docker network create -d bridge my_bridge
(use the --ip-range option)
然后,您可以将容器添加到该网络。
$ docker run -d --net=my_bridge --name db training/postgres
https://docs.docker.com/engine/tutorials/networkingcontainers/