在使用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命令)默认就会从这里给定的地址池中分配。