docker 容器通过桥接方式绑定到宿主机无法访问另外一个docker容器

背景

  公司最近前后端项目发布方式转型到容器化方式,docker的端口映射其实是通过iptables或者firewalld进行转发访问,而公司本身针对网络进行了策略访问,所以再发布的过程中出现了容器内部访问80端口可以,其他端口均提示“NO ROUTE TO HOST“。而查阅了baidu的相关资料,基本没有针对该问题具有比较好的解决方案

解决思路

  docker container的桥接模式是通过内部 网络地址172.17.*.*,桥接到外部的docker0 进行到外网通讯的。查看桥接的内部Container 可以通过  docker network inspect bridge查看。

那么也就是说我们需要在主机的网络访问策略中增加外部的端口访问权限。而本身桥接他就只是进行了网络的转发,并未在路由规则中添加对应的访问。

解决方案

  方式1.如果仅仅是开放某些端口访问(针对8765端口开放),可以通过 如下规则,(如果是firewalld ,写法上有区别)

ACCEPT     tcp  --  172.17.0.0/16        0.0.0.0/0            tcp dpt:8765

 

       方式2.如果是针对docker设置的端口进行全部开放,则在规则的上方增加

-A INPUT -i docker0 -j ACCEPT

 

 

转载请注明出处: https://www.cnblogs.com/dyft/articles/10058840.html 

posted @ 2018-12-03 15:39  淡忘的时间  阅读(2390)  评论(0编辑  收藏  举报