Docker - 没有路由到主机

新手上路,请多包涵

当我尝试从我的容器内连接到另一个容器的端口时,我 不成功 并得到,

 root@ac1590a59fe5:/opt/f5massupgrade# curl -v https://172.17.0.1:6379
* Rebuilt URL to: https://172.17.0.1:6379/
* Hostname was NOT found in DNS cache
*   Trying 172.17.0.1...
* connect to 172.17.0.1 port 6379 failed: No route to host
* Failed to connect to 172.17.0.1 port 6379: No route to host
* Closing connection 0

从docker主机我 成功了

 [root@docker-host ~]# curl -v https://172.17.0.1:6379/0
* About to connect() to 172.17.0.1 port 6379 (#0)
*   Trying 172.17.0.1...
* Connected to 172.17.0.1 (172.17.0.1) port 6379 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none

如果我检查 iptables 我可以看到问题,

 [root@docker-host ~]#  iptables -S INPUT
-P INPUT ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i docker0 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited

所以我 添加 了以下内容,一切正常,

 iptables -I INPUT 4 -i docker0 -j ACCEPT

我在这里错过了什么吗?

 [root@docker-host ~]# docker version
Client:
 Version:         1.9.1
 API version:     1.21
 Package version: docker-common-1.9.1-40.el7.centos.x86_64
 Go version:      go1.4.2
 Git commit:      ab77bde/1.9.1
 Built:
 OS/Arch:         linux/amd64

Server:
 Version:         1.9.1
 API version:     1.21
 Package version: docker-common-1.9.1-40.el7.centos.x86_64
 Go version:      go1.4.2
 Git commit:      ab77bde/1.9.1
 Built:
 OS/Arch:         linux/amd64

谢谢,

原文由 felix001 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 678
1 个回答

我们在运行 firewalld 的 RHEL 机器上遇到了这个问题。防火墙阻止了容器对主机的访问(除了 icmp 流量)。

我们需要配置防火墙以允许从 docker 容器到主机的流量。在我们的例子中,容器位于子网 172.27.0.0/16 上的桥接网络中(通过 docker network lsdocker inspect <network-name> 确定)。 firewalld 的防火墙规则可以通过以下方式更新:

 firewall-cmd --permanent --zone=public --add-rich-rule='rule family=ipv4 source address=172.27.0.0/16 accept'
firewall-cmd --reload

这是解决问题的 有用参考

原文由 al. 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进