Docker容器不联网问题排查

问题解决步骤:容器无法联网问题

  1. 检查 IP 转发设置
    使用以下命令检查 IP 转发是否启用:

    sysctl net.ipv4.ip_forward
    
    • 输出结果为 0,表示 IP 转发未启用。
  2. 启用 IP 转发
    通过以下命令启用 IP 转发:

    sysctl -w net.ipv4.ip_forward=1
    
  3. 永久启用 IP 转发
    为了使该更改永久生效,修改 /etc/sysctl.conf 文件,添加或修改以下行:

    net.ipv4.ip_forward = 1
    
  4. 应用更改
    运行以下命令应用更改:

    sysctl -p
    
  5. 问题解决
    经过上述步骤,IP 转发启用后,网络问题得到解决,报警系统恢复正常。

  6. 必要时可以重启容器


问题的根本原因是 ipv4 转发未启用,导致容器无法访问外部网络。启用 IP 转发后,容器能够正常联网并发送报警。

好的,这里是完整的命令步骤总结:

1. 检查容器的网络模式

使用以下命令检查容器的网络模式:

docker inspect 660abda37f41 | grep NetworkMode

2. 查看自定义网络配置

检查自定义网络 prom_apm 的配置:

docker network inspect prom_apm

3. 检查 iptables 的 NAT 规则

查看主机上的 NAT 规则,确认是否存在 MASQUERADE 规则:

iptables -t nat -L -n

你应该能看到类似以下的输出,确保有针对 192.168.128.0/20 子网的 MASQUERADE 规则:

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         
MASQUERADE  all  --  192.168.128.0/20     0.0.0.0/0

4. 添加缺失的 NAT 规则

如果没有 MASQUERADE 规则,手动添加它:

iptables -t nat -A POSTROUTING -s 192.168.128.0/20 ! -o docker0 -j MASQUERADE

5. 验证问题是否解决

问题解决后,容器应该可以访问外部网络,使用 ping 进行测试:

docker exec -it 660abda37f41 /bin/bash
ping 8.8.8.8

通过这些命令,应该能够解决容器的网络问题。如果你有任何进一步的问题,请随时联系我!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ascarl2010

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值