docker swarm:如何检查入口端点容器

时间:2017-03-15 08:30:15

标签: docker docker-swarm

当我检查入口时,我获取有关容器的信息:

 $docker inspect ingress
"Containers": {
            "1234567890": {
                "Name": "gateway.1.qwertyuiop",
                "EndpointID": "12345678990",
                "MacAddress": "00:11:22:33:44:55",
                "IPv4Address": "10.255.0.11/16",
                "IPv6Address": ""
            },
            "ingress-sbox": {
                "Name": "ingress-endpoint",
                "EndpointID": "1234567890",
                "MacAddress": "00:11:22:33:44:55",
                "IPv4Address": "10.255.0.3/16",
                "IPv6Address": ""
            }
        },

然后我可以检查第一个容器,但检查ingress-endpoint不返回任何内容

$ docker inspect ingress-endpoint
[]

我想要找到的是群集节点中入口端点的本地IP。

2 个答案:

答案 0 :(得分:1)

当运行[]给出ingress的输出时,很可能意味着这样的端点是一个陈旧的容器,它仍然挂钩docker network disconnect ingress --force ingress-endpoint网络。您可能希望断开网络连接,删除此类容器,然后通过执行

重新加入Swarm群集

docker network rm ingess

org.apache.tomcat.util.http.fileupload.FileUploadBase$IOFileUploadException

答案 1 :(得分:0)

不确定为什么需要这样做,但是如果您要查找传入数据包的路由位置,则可以查看iptables。

iptables -n -t nat -L DOCKER-INGRESS

在我的设置(其中一项服务发布端口80)上,我得到以下输出:

Chain DOCKER-INGRESS (2 references)
target     prot opt source               destination         
DNAT       tcp  --  0.0.0.0/0            0.0.0.0/0            tcp dpt:80 to:172.18.0.2:80
RETURN     all  --  0.0.0.0/0            0.0.0.0/0  

所以172.18.0.2是入口容器的IP地址

请注意,此ingress-sbox容器是Swarm模式为您创建的两个网络的一部分:

  • ingress
  • docker_gwbridge

这是Linux网络名称空间的所有部分,正如这篇非常好的文章https://neuvector.com/network-security/docker-swarm-container-networking/中所解释的,我建议阅读。

# cd /var/run/
# ln -s docker/netns .
# ip netns exec ingress_sbox ip addr

这给出了(在我的系统上):

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
7: eth0@if8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UP group default 
    link/ether 02:42:0a:ff:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 10.255.0.2/16 brd 10.255.255.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.255.0.4/32 brd 10.255.0.4 scope global eth0
       valid_lft forever preferred_lft forever
10: eth1@if11: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet 172.18.0.2/16 brd 172.18.255.255 scope global eth1
       valid_lft forever preferred_lft forever

您还可以在那些网络名称空间中运行iptables命令,以尝试并遵循神奇路由数据包的方式...