当我创建一个新网络时,docker使用172.255.255.255(172.17.1.0,172.18.1.0等)的地址创建它。但这可能与外部地址冲突,因为我网络中的所有计算机都具有相同的前缀(172.255.255.255)
有没有办法在创建新网络时配置docker使用的基本子网地址?
[更新]我正在自动创建和删除网络,因此,我无法设置--subnet选项(因为我不知道正在使用的是什么地址)。我需要docker动态管理地址池,就像管理入口网络(自动分配和修剪子网)一样。实际上,我需要的只是自定义入口基地址!
答案 0 :(得分:3)
Docker 18.06 introduces the --default-address-pool
option。使用它可以指定默认情况下用户定义的网络将使用的地址范围,而不是标准的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}
]
}
答案 1 :(得分:1)
默认网络名为bridge。这是设置为使用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/