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

博主在升级Docker版本后遇到了容器端口无法在宿主机上访问的问题,表现为curl命令返回连接被重置。经过一系列排查,包括检查sysctl设置、重启Docker和网络服务,最后发现问题是由于firewalld与Docker的冲突导致。通过重启firewalld和Docker服务解决了iptables配置错误。建议在Docker升级后重启相关服务以避免类似问题。
摘要由CSDN通过智能技术生成

概述

前些天,老大让升级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、服务容器全部都重启一边。

参考链接

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

Docker容器端口映射突然无法连接时,可以按照以下步骤进行排查: 1. 确认容器是否正在运行:使用`docker ps`命令检查容器的运行状态,确保容器正在运行。如果容器已停止,可以使用`docker start`命令重新启动容器。 2. 检查端口映射配置:使用`docker port <容器名称或ID>`命令检查容器端口映射配置是否正确。确保容器端口映射配置与所需的访问端口一致。 3. 检查主机防火墙规则:如果主机上存在防火墙,需检查防火墙规则是否允许流量通过容器映射端口。可以临时关闭防火墙进行测试,如果能够连接则说明防火墙规则可能导致连接问题,需要配置允许通过容器映射端口。 4. 检查网络连接:使用`ping`命令测试主机与容器之间的网络连通性。如果无法ping通容器IP,则可能是网络配置问题。可以尝试重启网络服务或重新配置网络。 5. 检查容器日志:使用`docker logs <容器名称或ID>`命令查看容器的日志信息,检查是否存在错误或异常提示。日志中可能会显示容器启动过程中的错误信息,从而指导我们排查问题。 6. 检查容器内部服务状态:如果容器中运行着特定的服务,可以登录到容器内部进行检查。使用`docker exec -it <容器名称或ID> bash`命令可以进入容器的命令行界面,查看容器内部相关的服务是否正常运行。 以上是排查容器端口映射无法连接的一般过程,根据具体情况可能需要更深入的排查。如果无法解决问题,可以参考Docker官方文档、技术论坛或向相关社区求助,以获取更多帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

夜晓码农

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

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

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

打赏作者

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

抵扣说明:

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

余额充值