容器网络不通排查思路

问题现象:

      宿主机无法访问到容器内部应用,如telnet不通。

可能的问题及解决思路:

1、容器应用可能未成功启动

解决方案:排查容器应用未启动的原因。

 

2、firewalld未关闭,由于docker的网络实现是基于iptables的转发实现的,而firewalld也同样运行在iptables上。开启firewalld的话可能firewalld回接管iptables(与启动顺序有关)。

解决方案:关闭firewalld(systemctl stop firewalld && systemctl disable firewalld)

3、流量转发(ip_forward)未开启,docker网络流量的流向涉及到宿主机网卡和docker的网桥,依赖数据转发的能力。所以需要操作系统内核操作设置允许转发。

解决方案:

    1. 先确认是否允许ip_forward转发:执行sysctl -a |grep ip_forward,若net.ipv4.ip_forward=0,则可以确定未开启。
    2. 编辑/etc/sysctl.conf,增加或者修改net.ipv4.ip_forward=1
    3. 执行sysctl -p命令使配置生效。

4、docker默认网段可能跟所在环境的网段存在冲突。

解决方案:更换docker默认网段之后重启dockerd,具体步骤为:

    1. 编辑/etc/docker/daemon.json在json中指定bip配置,如指定网段到192.168.222.0/24网段,则添加"bip": "192.168.222.0/24"
    2. 重启docker daemon(systemctl restart docker
posted @ 2024-02-22 10:42  陶清刚  阅读(50)  评论(0)    收藏  举报