在大型政体内部局域网,项目上线后发现部分网段无法访问,仔细排查是局域网网段与docker内网网段重叠,导致应用无法访问。
一般每个单位都会预留docker使用的内部网络地址,可能不尽相同,假设为10.255.0.0/16
如果是项目较小,也没有docker内部网络隔离的需求,直接这么干:
1、配置bip,配置成 10.255.0.1/16
vim /etc/docker/daemon.json
2、编辑docker-compose.yml,删除已有网络,添加 network_mode: bridge 使用默认的bridge网络,
如果不配置任何网络,docker默认会以docker-compose.yml所在文件夹名称_default为名自动创建一个网络,所以必须指定network_mode: bridge。
version: "3.2"
services:
ABC:
image: ABC/ABC:latest
container_name: ABC
ports:
- "8088:80"
restart: always
network_mode: bridge
3、销毁并重建容器
docker compose down && docker compose up -d
4、重启docker
systemctl daemon-reload
systemctl restart docker
6、删除没用的网络,如果删不掉,说明对应的网络还在使用,排查容器
docker network ls
docker network rm NETWORKID/NAME
7、查看容器的ip地址是否已经和bridge网络一致
docker inspect 容器名 | grep IPAddress
8、查看主机除了物理网卡的地址路由,是不是只剩下bridge网段的路由
ip route show
标签:容器,compose,network,bridge,网络,docker
From: https://www.cnblogs.com/dwj192/p/18345247