使用 docker-compose 或者使用了docker network的同學(xué)經(jīng)常會(huì)發(fā)生這樣一件事情,當(dāng)compose或者 docker network create 后,突然間服務(wù)器就沒(méi)有反應(yīng)了,隨之而來(lái)的就是。
huangs-MBP:~ huangdehui$ ping 10.88.88.88
PING 10.88.88.88 (10.88.88.88): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1
Request timeout for icmp_seq 2
Request timeout for icmp_seq 3
整臺(tái)服務(wù)器,就直接從網(wǎng)絡(luò)中消失了。
解決方式
控制臺(tái)輸入
docker inspect --format='{{.Name}} - {{range.IPAM.Config}}{{.Subnet}}{{end}}' $(docker network ls --format='{{.ID}}')
得到以下信息,將docker的網(wǎng)橋地址全部打印出來(lái),找出會(huì)導(dǎo)致沖突的橋,我這里的情況是192.168.0.0/20這個(gè)橋沖突導(dǎo)致我失去對(duì)服務(wù)器的網(wǎng)絡(luò)訪(fǎng)問(wèn)。
bridge:172.30.0.0/24
docker_gwbridge:192.168.16.0/20
host:
ingress:10.0.0.0/24
mariadb_default:172.19.0.0/16
none:
portainer_agent_network:10.0.1.0/24
renren_tel_api_default:192.168.0.0/20
tel:172.22.0.0/16
tel_api_default:172.21.0.0/16
刪除該橋
[root@portal ~]# docker network rm renren_tel_api_default
renren_tel_api_default
避免下次再出現(xiàn)這樣的情況
進(jìn)入 /etc/docker
[root@portal docker]# tree /etc/docker
/etc/docker
├── daemon.json
└── key.json
daemon.json這個(gè)文件如果存在直接改daemon.json中的內(nèi)容,如果不存在 touch daemon.json,指定網(wǎng)橋的地址值,注意網(wǎng)段設(shè)置,避免它在出現(xiàn)會(huì)導(dǎo)致沖突的ip。
{
"default-address-pools": [
{
"base": "172.30.0.0/16",
"size": 24
}
]
}
然后重啟服務(wù)器,重啟docker,即可。
補(bǔ)充一個(gè)實(shí)用命令,查看所有容器IP
docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)