码迷,mamicode.com
首页 > 其他好文 > 详细

docker宿主机上的端口无法对外提供服务

时间:2015-04-28 18:45:42      阅读:180      评论:0      收藏:0      [点我收藏+]

标签:docker

因为特殊要求有个服务需要配置到宿主机上,所以引发了以下这个问题。


实验:
容器中安装Tomcat,映射到宿主机为6666。

宿主机中也安装Tomcat,端口为8080。

端口使用netstat查看全部开启。

浏览器:访问容器中Tomcat 端口6666 访问成功 , telnet 6666端口成功
              访问宿主机Tomcat 端口8080 访问失败 , telnet 8080端口失败

排错分析:
说明宿主机8080端口对外是关闭的,而又想到宿主机ssh端口22为什么是对外可以通信呢?

想到docker宿主机--容器--外网这三点通信都是通过宿主机的iptables nat去做的转换,所以怀疑应该是iptables的问题!

# iptables-save > q.txt

# cat q.txt

-A IN_public_allow -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
果然在宿主机的规则连中有,插入了开放本机端口的规则。

解决:

cat q.txt

# -A IN_public_allow -p tcp -m tcp --dport 22 -m conntrack --ctstate NEW -j ACCEPT
# -A IN_public_allow -p tcp -m tcp --dport 8080 -m conntrack --ctstate NEW -j ACCEPT

iptables-restore <q.txt


访问宿主机8080端口成功。


本文出自 “在路上” 博客,请务必保留此出处http://beijing0414.blog.51cto.com/8612563/1639870

docker宿主机上的端口无法对外提供服务

标签:docker

原文地址:http://beijing0414.blog.51cto.com/8612563/1639870

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!