【发布时间】:2020-03-11 12:34:24
【问题描述】:
我有 2 个运行的 docker 容器连接到同一个网络。在容器 1 中,我可以通过 IP ping 容器 2(反之亦然)。但是在容器 1 中,我无法通过 name ping 容器 2(反之亦然)。
据此,我应该能够通过容器名称 ping:https://docs.docker.com/network/network-tutorial-standalone/#use-user-defined-bridge-networks
我做错了什么?
//START MYSQL IN CONTAINER ONE CONNECTING TO TESTNET
PS C:\Users\Administrator> docker run -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_DATABASE=MyDb -p 3306:3306 --network testnet -d mysql:latest
7ba710ca9ed0ffd346416eae31553460799cc1bedf3f7cfa9d7ef3b369e41f7e
//START MYEXECUTABLE IN CONTAINER TWO CONNECTING TO TESTNET
PS C:\Users\Administrator> docker run -p 8948:8948 --network testnet -d myexecutable:ubuntu
399c19d4adaf9cb6679ed062cf92455d1dd2d83087d51966e6a4d499dc312909
//BOTH CONTAINERS RUNNING
PS C:\Users\Administrator> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
399c19d4adaf myexecutable:ubuntu "dotnet myexecut…" About a minute ago Up About a minute 0.0.0.0:8948->8948/tcp optimistic_lamport
7ba710ca9ed0 mysql:latest "docker-entrypoint.s…" About a minute ago Up About a minute 0.0.0.0:3306->3306/tcp, 33060/tcp charming_gates
//INSPECT TESTNET, SEE THAT BOTH CONTAINERS CONNECTED
PS C:\Users\Administrator> docker network inspect testnet
[
{
"Name": "testnet",
"Id": "8db5e107100350f594d405890f94a8f0770aae37ae71a102cbbdb24baa27e117",
"Created": "2020-03-11T11:24:45.060816989Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {
"399c19d4adaf9cb6679ed062cf92455d1dd2d83087d51966e6a4d499dc312909": {
"Name": "optimistic_lamport",
"EndpointID": "a99566e018a295f28ffc6758e3e78dfa0b1f5292dedfef0546e8ceaed11b2b3d",
"MacAddress": "02:42:ac:12:00:03",
"IPv4Address": "172.18.0.3/16",
"IPv6Address": ""
},
"7ba710ca9ed0ffd346416eae31553460799cc1bedf3f7cfa9d7ef3b369e41f7e": {
"Name": "charming_gates",
"EndpointID": "78729185c317d096a637d637929d3bd3d32dec9f5587327bc5703ac708225d37",
"MacAddress": "02:42:ac:12:00:02",
"IPv4Address": "172.18.0.2/16",
"IPv6Address": ""
}
},
"Options": {},
"Labels": {}
}
]
//ATTACH TO CONTAINER ONE SHELL
PS C:\Users\Administrator> docker exec -it optimistic_lamport bash
//PING CONTAINER TWO BY IP - WORKS FINE
root@399c19d4adaf:/app# ping -c 2 172.18.0.2
PING 172.18.0.2 (172.18.0.2) 56(84) bytes of data.
64 bytes from 172.18.0.2: icmp_seq=1 ttl=64 time=0.100 ms
64 bytes from 172.18.0.2: icmp_seq=2 ttl=64 time=0.047 ms
//PING CONTAINER TWO BY NAME - FAIL
root@399c19d4adaf:/app# ping -c 2 charming_gates
ping: charming_gates: Name or service not known
//CAT /ETC/HOSTS
root@399c19d4adaf:/app# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.18.0.3 399c19d4adaf
我做错了什么?
我已经查看了这些,似乎有类似的问题,但没有明确的结果。除了一种专门为容器分配 IP 的解决方案,我不喜欢这种想法。
How to get Docker containers to talk to each other while running on my local host?
Can't access Docker container by name in same network
How to configure containers in one network to connect to each other (server -> mysql)?
【问题讨论】:
标签: docker