问题背景
Docker启动时会在宿主机上创建一个docker0的虚拟网桥,默认网段为172.17.0.1/16,恰好公司内网VPN使用的是172.18网段,这就导致在使用docker-compose部署的服务时,自动生成的网桥很容易与内网冲突,导致服务无法访问。
解决思路
通过修改配置文件,把 docker0 指定其它网段,同时控制 docker-compose 创建容器时的网段范围。
具体步骤如下:
修改/etc/docker/daemon.json,添加以下配置(要配置的网段范围根据自身情况进行修改):
bip:设置docker0网卡配置
default-address-pools:
base: docker启动容器ip范围
size:每个容器子网大小
{"bip": "192.222.0.1/24",
"default-address-pools": [
{
"base": "192.123.0.0/16",
"size": 24
}
]
}
-
删除所有不再使用中的docker网桥,并重启docker服务:
$ docker network prune $ systemctl restart docker
-
启动容器,并查看网桥IP
$ docker-compose up -d $ ifconfig
此时发现容器IP已经在设置的范围内,冲突问题解决。
docker-compose服务设置指定网段
networks:
- analysisnetworks:
analysis:
name: analysis
driver: bridge
external: false
ipam:
driver: default
config:
- subnet: 188.188.19.0/24