docker容器无法访问外网
环境
system:CentOS 7.1.1503
core:3.10
network:非DHCP
docker:17.05 ce
问题
docker启动了swarm集群,在swarm集群中启动的容器,容器内无法访问外网,但宿主机可以访问外网。
在容器内ping宿主机和ping www.baidu.com,会提示如下结果:
排查
下面是我一系列的猜测及排查步骤:
怀疑一:与DHCP有关系
怀疑原因:在DHCP网络中执行同一个镜像可以访问外网,在非DHCP中创建的容器无法访问外网。
排除:与DHCP无关,只要宿主机可以访问外网,容器内就可以访问外网
怀疑二:与docker版本有关
怀疑原因:在docker1.12版本中执行没问题,在docker 17.05ce版本中执行有问题
排除:基本都是稳定版,docker不会做太大改动,而且这种基础bug应该不会在稳定版中出现
怀疑三:与swarm集群有关系
排除:在swarm集群节点中,手动创建了docker容器,同一个镜像的也无法访问
怀疑四:与DHCP的DNS有关系
排除:手动设置了DNS参数,依然无法访问外网,设置方法(docker service create -d -p 8888:8761 –name test –dns 114.114.114.114 alpine ping www.baidu.com)
怀疑五:与防火墙、安全组有关
怀疑原因:防火墙本身对端口有限制,swarm集群中容器访问外网也需要端口
排除:防火墙关闭了,并且去掉了自启动
解决
以上都是基于一些怀疑,做了排查的步骤,而实际是如何解决的呢?
实际是防火墙的问题,由于我是新的服务器,只安装了docker,关了防火墙,并没有重启。
防火墙在关闭后,需要重启宿主机,至少重启docker服务。
原因:防火墙的起、停、刷新这类行为会导致清空 Docker 设置的网络规则,而导致容器内的网络无法和外部互联。
how to stop hair loss for black men
December 12, 2017 at 10:17 am
Thanks for some other informative site. Where else may I am getting that type of info written in such a perfect approach? I’ve a challenge that I’m just now working on, and I’ve been on the glance out for such information.
棋
December 10, 2017 at 6:46 pm
Wonderful websіte. A lot of helpful info here. I’m sending it to some friends ans additionally sharing in delicious.
And obᴠiouѕly, thanks for your sweat!
Stevegeoda
September 17, 2017 at 11:25 pm
Find out what you need to improve in yourself to become more effective!
笑八达
August 29, 2017 at 11:09 am
世间博客不少,风景这边独好!