问题描述

有 IP 地址为 172.24.x.xx/24 的服务器无法 ping 通,原因为 docker 默认网段 172.17.0.0/16 占用了服务器所在网段,导致外部请求无法访问到真实服务器。

解决方案

  1. 查看路由信息
1ifconfig docker0
2
3docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
4        inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255
5        ether 02:42:90:e0:c1:a0  txqueuelen 0  (Ethernet)
6        RX packets 0  bytes 0 (0.0 B)
7        RX errors 0  dropped 0  overruns 0  frame 0
8        TX packets 0  bytes 0 (0.0 B)
9        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

可以看到,docker0 占用的网段为 172.17.0.1/16

  1. 修改 docker 默认网段
 1# 停止 docker 服务
 2systemctl stop docker
 3
 4# 删除原有网桥
 5ip link del docker0 down
 6
 7# 修改 docker 网段
 8vim /etc/docker/daemon.json 
 9"bip":"192.168.100.1/24"
10
11# 重启 docker 服务
12systemctl restart docker

此时再执行 ifconfig docker0 可以看到 docker 的网段已变更。

参考资料:

  1. https://cloud.tencent.com/developer/article/2242559