docker 网络冲突

使用 docker-compose 或者使用了docker network的同学经常会发生这样一件事情,当compose或者 docker network create 后,突然间服务器就没有反应了,随之而来的就是。

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

整台服务器,就直接从网络中消失了。

解决方式
控制台输入

docker inspect --format='{{.Name}} - {{range.IPAM.Config}}{{.Subnet}}{{end}}' $(docker network ls --format='{{.ID}}')

得到以下信息,将docker的网桥地址全部打印出来,找出会导致冲突的桥,我这里的情况是192.168.0.0/20这个桥冲突导致我失去对服务器的网络访问。

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

避免下次再出现这样的情况
进入 /etc/docker

[root@portal docker]# tree /etc/docker
/etc/docker
├── daemon.json
└── key.json

daemon.json这个文件如果存在直接改daemon.json中的内容,如果不存在 touch daemon.json,指定网桥的地址值,注意网段设置,避免它在出现会导致冲突的ip。

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

然后重启服务器,重启docker,即可。

补充一个实用命令,查看所有容器IP

docker inspect --format='{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -aq)

你可能感兴趣的:(docker 网络冲突)