如何设置自定义Docker网络的默认值

1,420 阅读1分钟

在使用Docker的时候,我们常常需要创建自定义网络。比较常见的方式有:

  • 使用 DockerCompose , 通常配置好 docker-compose.yml 后,通过 docker-compose up 来创建。
  • 直接使用 Docker ,通常通过 docker network create来创建。

默认情况下,这两种方式创建自定义网络,默认会从 172.20.0.0/16 选取可用网段。虽然Docker会自动跳过宿主机所在的网段。但是如果不是宿主机所在,但又是宿主机环境中但网段呢?Docker默认是感知不到的。这种情况下,就需要我们修改自定义网络的网段了。

对应上面的使用方式,要想修改自定义网段,方法分别是

  • docker-compose.yml 中配置网络的 networks.default.ipam.config.subnet 选项。
  • docker network create 命令的 --subnet 参数指定。

这两种方式都要手动指定。仍然不方便。比如第一种方式,如果docker-compose.yml需要提交到代码库,那写死的网段配置在每个用户那里就有可能冲突。那么有没有什么一劳永逸的办法呢? 有!那就是直接修改Docker Daemon的配置。在 /etc/docker/daemon.json 中增加如下设置:

{
  "default-address-pools":[
    {"base":"10.10.0.0/16","size":24}
  ]
}

重启docker后,新创建自定义网络(不管是通过DockerCompose还是直接docker命令)默认就会从这里给定的地址池中分配。