如何为所有新 docker 网络设置基本 IP 地址
How to set base ip address for all new docker networks
当我创建一个新网络时,docker 使用类似于 172.255.255.255(172.17.1.0、172.18.1.0 等)的地址创建它。但这可能与外部地址冲突,因为我网络中的所有机器都具有相同的前缀 (172.255.255.255)
有没有办法配置 docker 在创建新网络时使用的基本子网地址?
[更新] 我正在自动创建和删除网络,因此,我无法设置 --subnet 选项(因为我不知道哪个地址正在使用或未使用)。我需要 docker 动态管理地址池,就像它管理入口网络(自动分配和修剪子网)一样。其实我需要的只是自定义入口基址!
默认网络名为网桥。这是设置使用 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/
Docker 18.06 introduces the --default-address-pool
option。有了它,您可以指定用户定义的网络默认使用的地址范围,而不是标准 172.x
您可以查看已实现和讨论功能的拉取请求以获取更多信息:moby/29376, moby/36054, moby/36396、
您可以将参数设置为 docker 守护程序的命令行参数:
--default-addr-pool
This flag specifies default subnet pools for global scope networks.
Format example is --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}
]
}
当我创建一个新网络时,docker 使用类似于 172.255.255.255(172.17.1.0、172.18.1.0 等)的地址创建它。但这可能与外部地址冲突,因为我网络中的所有机器都具有相同的前缀 (172.255.255.255)
有没有办法配置 docker 在创建新网络时使用的基本子网地址?
[更新] 我正在自动创建和删除网络,因此,我无法设置 --subnet 选项(因为我不知道哪个地址正在使用或未使用)。我需要 docker 动态管理地址池,就像它管理入口网络(自动分配和修剪子网)一样。其实我需要的只是自定义入口基址!
默认网络名为网桥。这是设置使用 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/
Docker 18.06 introduces the --default-address-pool
option。有了它,您可以指定用户定义的网络默认使用的地址范围,而不是标准 172.x
您可以查看已实现和讨论功能的拉取请求以获取更多信息:moby/29376, moby/36054, moby/36396、
您可以将参数设置为 docker 守护程序的命令行参数:
--default-addr-pool
This flag specifies default subnet pools for global scope networks. Format example is
--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}
]
}