Docker端口映射无法访问的问题排查

概述

前些天,老大让升级Docker版本,后面折腾了一番,成功升级到最新版本Docker,Docker容器啥的都跑起来了,以为一切顺利了,结果第二天就发现容器映射到宿主机的端口无法访问。在宿主机用 curl 127.0.0.1:端口 测试,得到以下反馈

curl: (56) Recv failure: 连接被对方重设

尝试的排查

  1. 配置检查
sysctl net.ipv4.ip_forward

0 - 未开启转发,1 - 已开启转发。经排查没问题

  1. 局部重启大法

第一次:

docker restart 容器ID

经过测试,没有解决问题。PS:容器是通过docker-compose启动的

第二次:

service docker restart
service network restart

经测试,没有解决问题。

第三次:
利用docker-compose重启所有服务容器,然后启动的时候发现报了以下错误

ERROR: for ch Cannot start service XX: driver failed programming external connectivity on endpoint XXXX (f18e09def033319d2dc8fb57ac3d2447a09ab5a4b50d6dd3bf9f607ad7e57924): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9009 -j DNAT --to-destination 172.19.0.2:9009 ! -i br-73bbc1354949: iptables: No chain/target/match by that name.
(exit status 1))

好家伙,错误根源出来了,然后执行以下命令解决

service firewalld restart
service docker restart

然后重新启动对应容器即可

总结

我遇到该问题应该是安装新版本的docker时候,将旧版本的卸载了,然后服务器又有Docker容器迁移等,具体根源无法确定,只能知道咋样解决的。
PS:Docker升级之后,最好将firewalld 、docker、服务容器全部都重启一边。

扫描二维码关注公众号,回复: 15901871 查看本文章

参考链接

docker 启动 nginx 报错 docker0: iptables: No chain/target/match by that name
docker发布的服务无法访问-端口不通问题解决
docker端口映射无法访问的解决

猜你喜欢

转载自blog.csdn.net/qq_38189542/article/details/126696309