使用docker组合2个docker集装箱之间的连接

我有一个2 docker容器“restorecms_facade_1”(facade服务)和“restorecms_identity_1”(身份服务)运行在同一个网桥“restorecms_default”。

我在我的泊坞窗撰写文件中为主机名指定了“hostname:identity-srv”作为身份服务镜像

门面服务有5000端口暴露,它接受我的graphQL请求。 这个外观服务将把请求委托给在端口50051上运行的身份服务(dns name'identity-srv'),但是当前请求在门面服务上超时。

我的docker集装箱和新娘networking细节如下。

我甚至不能从门面服务ping身份服务(但其他方式是可能的)。

我在这里丢失了什么东西,还是我需要在门面服务上添加任何东西,以便连接通过身份服务?

Docker ps:

akumar@client3 /restore $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4a8854ce4876 xxx/facade-srv "node lib/index.js" 41 minutes ago Up 41 minutes 0.0.0.0:5000->5000/tcp restorecms_facade_1 00f1f00ae2a6 xxx/identity-srv "node service.js" 41 minutes ago Up 41 minutes (healthy) 0.0.0.0:50051->50051/tcp restorecms_identity_1 

Docker检查:

 akumar@client3 /restore/identity-srv-TypeScript $ docker inspect restorecms_default [ { "Name": "restorecms_default", "Id": "102358eab67884f7d39b78fd0bcf1050499d3dc667eddab5e15086633185837d", "Created": "2017-06-08T10:40:59.672964582+02:00", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": null, "Config": [ { "Subnet": "172.18.0.0/16", "Gateway": "172.18.0.1" } ] }, "Internal": false, "Attachable": true, "Ingress": false, "Containers": { "00f1f00ae2a64f489a530a63a9fb57711618d5e67769b739db514b5f20b73d36": { "Name": "restorecms_identity_1", "EndpointID": "d005cdff65479817bf769e4b60a18769c40d9d9cae396f3c735c2e497d6e08a4", "MacAddress": "02:42:ac:12:00:09", "IPv4Address": "172.18.0.9/16", "IPv6Address": "" }, "4a8854ce487698149072c224378f697e9309e32649f6010d2d8c4cc4f0bb3f42": { "Name": "restorecms_facade_1", "EndpointID": "2509c8e1444d27cbe8a3188412fcbfb1aab103ec2366c22f3ad614c684ef87ab", "MacAddress": "02:42:ac:12:00:0a", "IPv4Address": "172.18.0.10/16", "IPv6Address": "" } }, "Options": {}, "Labels": { "com.docker.compose.network": "default", "com.docker.compose.project": "restorecms" } } ] 

主机名和ping:

 root@identity-srv:/# cat /etc/hostname identity-srv root@identity-srv:/# ping 4a8854ce4876 PING 4a8854ce4876 (172.18.0.10): 48 data bytes 56 bytes from 172.18.0.10: icmp_seq=0 ttl=64 time=0.241 ms 56 bytes from 172.18.0.10: icmp_seq=1 ttl=64 time=0.149 ms 56 bytes from 172.18.0.10: icmp_seq=2 ttl=64 time=0.165 ms ^C--- 4a8854ce4876 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max/stddev = 0.149/0.185/0.241/0.040 ms root@4a8854ce4876:/# cat /etc/hostname 4a8854ce4876 root@4a8854ce4876:/# ping identity-srv ping: unknown host 

我目前的docker-compose.yml(用于身份和门面服务)configuration如下:

 identity: hostname: identity-srv image: xxx/identity-srv ports: - "50051:50051" depends_on: arangodb: condition: service_healthy links: - arangodb - kafka healthcheck: test: "exit 0" # Facade service facade: image: xxx/facade-srv ports: - "5000:5000" depends_on: identity: condition: service_healthy #resource: # condition: service_healthy links: - identity - kafka - elasticsearch - arangodb - redis 

主机名只设置主机名“容器内”。 如果你想从另外一个ping它,你需要使用你在links部分使用的别名(默认为服务名称)。

ping identity如果你想使用identity-srv你可以使用这种方式的... links: - identity:identity-srv ...