访问其他主机上的Docker容器时的HTTP 403响应
我正在使用Docker版本17.06.2-ce,在CentOS Linux release 7.2.1511上构buildcec0b72。
我的目标是让一个docker容器在主机的一个端口上发布,并让信息对同一子网中的另一个系统可见。 我的docker图片是入门教程中内置的friendlyhello图片 。 我有一个Docker集线器上的图像 ,你可以使用下面的命令。 它暴露了文件内的80端口,然后我打电话给图像
docker run -d -p 8080:80 jeremydr2/get-started:part2
当我在运行容器的主机上curl localhost:8080
或者curl 10.xxx:8080
时,我可以得到正确的响应(基本上是“hello world”)。 当在另一个主机上curl时,我得到一些html格式和
default "Access Denied" response (403)
请注意,成功的响应可能需要一分多钟 ,但是不成功的响应仍将立即生效。
从 我读到的 这个 ,我不应该混淆iptables来使这个工作,这是好的,因为我不是很了解networking。 不过,我认为有些事情是错误的,因为iptables -t nat -L | grep 8080
iptables -t nat -L | grep 8080
不会返回任何东西,当我期望它有一条关于redirect或允许stream量到该端口的线。 我禁用了SELinux和firewalld,而是安装了iptables-services。
我可以使用其他命令在主机之间发送stream量,如:
[root@host1 ~]# ncat -l 8001 [root@host2 ~]# echo "testing123" > /dev/tcp/<host1_ip_addr>/8001
所以我觉得这不仅仅是一个错误configuration的networking。 FWIW,我也尝试了--network=host
docker run ...
命令--network=host
,这也没有帮助。 现在已经过了2天了。 如果有人有build议,我将不胜感激。
编辑:这绝对是,不知何故,一个错误configuration的networking。 我在家里重复了它,而且它每个人都说泊坞窗应该是这样的。 任何build议如何去搞清楚networking的东西阻塞docker的部分将不胜感激。
这是因为我设立的互联网代理。 取消所有的代理variables后,我可以从另一个系统curl到主机。 我被告知,我设置的no_proxy
和NO_PROXY
variables足以防止这种情况,但事实并非如此。
感谢所有看过这个的人。