在企业数字化转型过程中,Docker 作为一种常用的容器技术,一个非常强大的功能就是通过端口映射将容器内的服务发布到外部。
然而,有时候我们会遇到无法从外部访问容器内部文件的问题,导致服务无法正常运行。下面将对这个问题进行深入剖析并给出解决方案。
一、【docker端口映射不能正常访问】的问题描述:
我在服务器上启动了个nginx:latest的容器,使用命令如下:
[root@Hangz-Ecs1 ~]# docker run -id -p 8080:80 --name my_nginx nginx:latest
66559ae47822bcab638f12855d24f2b0beba51b24aa642c461f4ed2bb5de36c9
docker启动之后,使用netstat -ntalp | grep 8080 发现端口监听成功
[root@Hangz-Ecs1 ~]# netstat -ntalp | grep 8080
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 1439/docker-proxy
tcp6 0 0 :::8080 :::* LISTEN 1443/docker-proxy
然后就到客户机去发起请求发现请求不成功,提示连接失败,然后使用telnet发现8080端口不通,这个时候去检查firewalld 和selinux发现都是处于关闭状态,在服务器上telnet8080端口发现正常通信,使用iptables -t nat -L检查iptables转发正常,但是就是不通
[root@Hangz-Ecs1 ~]# iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
DOCKER all -- anywhere anywhere ADDRTYPE match dst-type LOCAL
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
DOCKER all -- anywhere !loopback/8 ADDRTYPE match dst-type LOCAL
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
MASQUERADE all -- 172.18.0.0/16 anywhere
MASQUERADE all -- 172.17.0.0/16 anywhere
MASQUERADE tcp -- 172.18.0.2 172.18.0.2 tcp dpt:10514
MASQUERADE tcp -- 172.18.0.10 172.18.0.10 tcp dpt:webcache
MASQUERADE tcp -- 172.17.0.2 172.17.0.2 tcp dpt:http
Chain DOCKER (2 references)
target prot opt source destination
RETURN all -- anywhere anywhere
RETURN all -- anywhere anywhere
DNAT tcp -- anywhere localhost tcp dpt:fujitsu-dtcns to:172.18.0.2:10514
DNAT tcp -- anywhere anywhere tcp dpt:http to:172.18.0.10:8080
二、【docker端口映射不能正常访问】的解决方法:
根据上面问题排查分析后 ,最后发现是转发出问题了,Linux转发是要开启内核转发功能net.ipv4.ip_forward的,于是检查内核转发是否打开
[root@Hangz-Ecs1 ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 0
这里发现内核转发是处于关闭状态的(0代表内核转发没有打开)这里手动echo命令开启内核转发,并再次查询内核转发是否开启
[root@Hangz-Ecs1 ~]# echo 1 > /proc/sys/net/ipv4/ip_forward
[root@Hangz-Ecs1 ~]# sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1
这样子就代表我们的内核转发已经可以正常使用了!
关于奇墨ITQM
奇墨科技是全域数字资产质量管理平台及服务商,在全球创新提出了ITQM体系并自研了奇墨ITQM平台、ACS全云服务、QAPI、QTools工具等一系列数智化产品与服务,目前已帮助大量世界500强企业低成本引入全新IT治理体系,全面提升企业数字化管理能力。
旗下的奇墨ITQM平台,是业界第一个成功通过中国信通院《可信云•云成本优化工具能力要求第二部分 混合多云成本优化工具》评估的IT管理平台,可为企业提供FinOps成本优化、AIOps智能运维、全云管理、数据安全等QAPI能力,并通过自上而下的数字化管理模式、自动化的运维管理流程、专业化的解决方案与服务,助力企业加速“业务-技术-组织”之间的高效连接和协同,有效降低云成本支出、提高IT资源利用率和优化数字化业务决策,全面企业提升数字化价值。
标签:8080,--,tcp,访问,anywhere,转发,172.18,docker,端口映射 From: https://blog.51cto.com/u_16239222/7508756