容器网络不通排查思路
问题现象:
宿主机无法访问到容器内部应用,如telnet不通。
可能的问题及解决思路:
1、容器应用可能未成功启动
解决方案:排查容器应用未启动的原因。
2、firewalld未关闭,由于docker的网络实现是基于iptables的转发实现的,而firewalld也同样运行在iptables上。开启firewalld的话可能firewalld回接管iptables(与启动顺序有关)。
解决方案:关闭firewalld(systemctl stop firewalld && systemctl disable firewalld)
3、流量转发(ip_forward)未开启,docker网络流量的流向涉及到宿主机网卡和docker的网桥,依赖数据转发的能力。所以需要操作系统内核操作设置允许转发。
解决方案:
- 先确认是否允许ip_forward转发:执行
sysctl -a |grep ip_forward,若net.ipv4.ip_forward=0,则可以确定未开启。 - 编辑/etc/sysctl.conf,增加或者修改
net.ipv4.ip_forward=1 - 执行sysctl -p命令使配置生效。
- 先确认是否允许ip_forward转发:执行
4、docker默认网段可能跟所在环境的网段存在冲突。
解决方案:更换docker默认网段之后重启dockerd,具体步骤为:
- 编辑/
etc/docker/daemon.json在json中指定bip配置,如指定网段到192.168.222.0/24网段,则添加"bip": "192.168.222.0/24" - 重启docker daemon(
systemctl restart docker)
- 编辑/
浙公网安备 33010602011771号