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

情境描述

创建一个docker容器,并进行端口映射。容器启动后,在部署容器的主机上可以访问映射端口,但是其他主机无法访问。

问题排查

出现上述情况,应是请求被拦截。出现该问题的可能是由于firewall配置异常、ip转发关闭、iptables服务拦截了请求

排查firewall

(1) 使用firewall-cmd --state查看防火墙运行情况
如果防火墙处于not running,则可以排除防火墙阻断请求的可能。
如果输出防火墙处于running则表示防火墙正在运行,需进行下一步排查
(2) 使用firewall-cmd --list-portsfirewall-cmd --list-services查看防火墙开放了哪些端口和服务。如果开放的端口中没有包含docker容器对外映射的端口,则可以采取以下解决方式:

  • 关闭防火墙服务systemctl stop firewalld.service
  • 添加策略打开指定端口
$ firewall-cmd --add-port=port/tcp --permanent
$ firewall-cmd reload

查看ip转发是否开启

通过cat /proc/sys/net/ipv4/ip_forward查看ip转发是否开启。如果该值为0则需要配置其开启

$ echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf 

关闭iptables

$ service iptables stop
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官方文档、技术论坛或向相关社区求助,以获取更多帮助。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值