【问题标题】:Docker Intercontainer communication on CentOS 7CentOS 7 上的 Docker 容器间通信
【发布时间】:2018-12-07 16:34:28
【问题描述】:

我正在为每个服务使用 docker 设置微服务架构。我还使用在自己的 docker 容器中运行的 kong API 网关。 docker 主机是在 IP 192.168.222.76 的 VM 中运行的 Centos 7。

在主机命令行上,我可以正常访问端口 7000 上的启动服务。但是,在kong VM中,我ping IP地址但无法访问该服务。从下面的输出中可以看到,它显示“主机无法访问”。

我正在使用 --icc=true 和 --iptables=true 启动 docker,并且我对 firewalld 和丰富的规则等进行了一些建议的更改,但我仍然无法从kong 容器。

我正在使用命名网络“kong-net”启动 kong 容器,并且 kong 数据库实例位于同一个 docker 网络中,它们似乎能够通信。我已经在启动时将我的启动服务容器添加到同一个网络,但仍然没有乐趣。 kong 容器可以访问外部世界,只是不能访问同一主机上的其他 docker 容器。

输出如下:

[root@docker ~]# 清除
[root@docker ~]# curl 192.168.222.76:7000/starter/hello
匿名人士您好!!
[root@docker ~]# docker exec -it kong /bin/ash
# curl 192.168.222.76:7000/starter/hello
curl: (7) 连接192.168.222.76端口7000失败:主机不可达

# curl www.google.com
HTML 正确返回...

对此的任何帮助表示赞赏!

【问题讨论】:

  • 您有一台还是两台虚拟机?您能否包含相关的docker run 命令以及您实际对防火墙配置所做的更改集?

标签: docker centos7 kong firewalld


【解决方案1】:

您必须使用他的容器名称到达另一个容器。 试试这个:

docker exec -t kong curl servicename:7000/starter/hello

Kong 容器和服务容器必须共享同一个网络

【讨论】:

    【解决方案2】:

    我能够通过一起禁用 firewalld(停止、禁用、使用 systemctl 屏蔽)并在 iptables 中打开所有内容来使 ICC 正常工作。现在只需设置规则以阻止入站访问,API 网关和 SSH 除外。

    谢谢!

    【讨论】:

      【解决方案3】:

      我以前遇到过这个问题。如果禁用防火墙可以解决问题,请不要禁用防火墙,这是一个非常大的安全问题。正确的做法是首先重新激活防火墙,然后添加网络伪装。

      firewall-cmd --zone=public --add-masquerade --permanent

      【讨论】:

        猜你喜欢
        • 2014-10-15
        • 2017-06-30
        • 1970-01-01
        • 2018-11-25
        • 2019-03-07
        • 1970-01-01
        • 2017-10-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多