0

我正在为每个服务使用 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 ~]# clear
[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: Host is unreachable

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

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

4

3 回答 3

0

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

谢谢!

于 2018-12-10T15:27:16.953 回答
0

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

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

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

于 2018-12-07T17:58:46.547 回答
0

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

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

于 2020-10-06T21:44:04.307 回答