如何为所有新的docker网络设置基本IP地址

时间:2017-12-13 16:47:45

标签: docker docker-swarm

当我创建一个新网络时,docker使用172.255.255.255(172.17.1.0,172.18.1.0等)的地址创建它。但这可能与外部地址冲突,因为我网络中的所有计算机都具有相同的前缀(172.255.255.255)

有没有办法在创建新网络时配置docker使用的基本子网地址?

[更新]我正在自动创建和删除网络,因此,我无法设置--subnet选项(因为我不知道正在使用的是什么地址)。我需要docker动态管理地址池,就像管理入口网络(自动分配和修剪子网)一样。实际上,我需要的只是自定义入口基地址!

2 个答案:

答案 0 :(得分:3)

Docker 18.06 introduces the --default-address-pool option。使用它可以指定默认情况下用户定义的网络将使用的地址范围,而不是标准的172.x 您可以在其中实现和讨论功能的拉取请求中了解更多信息:moby/29376moby/36054moby/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/