怎么解决docker容器无法通过IP访问宿主机问题
千喜网络服务器,容器主机
本文是关于如何解决docker容器无法通过IP访问主机的问题。海外主机觉得很实用,就分享给大家参考,跟着海外主机看了看。
问题起源
在使用docker的过程中,不幸的是我需要访问docker容器中主机的端口80,它是从另一个容器的端口8080映射而来的。当我通过容器中的docker的桥172.17.0.1访问主机时,我发现了:
curl: 无法连接到172.17.0.1端口80:没有到主机的路由
查找问题原因
可以确认容器和主机之间有网络连接,因为可以ping通容器内部的主机:到172.17.0.1。
root @ 930d 07576 eef :/# ping 172 . 17 . 0 . 1
ping 172 . 17 . 0 . 156字节数据。
来自172 . 17 . 0 . 1: icmp _ seq=1 TTL=64 time=0.130 ms的64字节也可以访问容器内部的其他内部和外部网络。
Iptables显示还允许docker容器访问:
#iptables - list|grepDOCKER
码头工人-隔离所有人-任何地方任何地方
任何地方任何地方
咨询客服
链坞隔离后,搜索了一些数据才发现这个问题。没有从容器到主机的主机网络请求路由-从其他容器发布的IP :端口。
解释
正如Docker社区表单所说,这是一个已知的错误。主机的80端口允许其他计算机访问它,但不允许该计算机的Docker容器访问它。防火墙规则必须设置为允许此计算机的Docker容器访问它。
Gypark指出,在/etc/firewalld/zones/public . XML中添加防火墙规则可以避免这个问题。
rulefamily='ipv4 '
sourceaddress='172.17.0.0/16'/
接受/
/rule:注意这里的172.17.0.0/16可
然后重启防火墙:
在systemctlrestartfirewalld之后,您可以访问docker容器内部主机的端口80。
其它问题
其实,当我用vmware打开一个新的虚拟机,希望重现这个问题时,我发现新的虚拟机上没有类似的问题。也就是说容器可以通过172.17.0.1直接访问主机80端口,我查防火墙配置的时候没有看到172.17.xx.xx的白名单。
猜测是因为新虚拟机安装的docker是docker版本1.12.5,build 047e51b/1.12.5,也就是Red Hat从docker开源版本开发的版本,而之前的版本是Docker版本17.06.2-ce。Build cec0b72属于Docker-CE。可能docker版本有区别。红帽子顺便修正了已知Bug。
感谢阅读!本文关于“如何解决码头工人集装箱无法通过IP访问主机的问题”在此分享。希望以上内容能帮助大家学到更多的知识。如果你觉得文章好,可以分享给更多人看!
Tags:千喜网络服务器,容器主机,怎么解决docker容器无法通过IP访问宿主机问题
版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。