Reputation: 2421
I have 2 docker containers running attached to same network. From within container 1 I can ping container 2 by IP (and vice versa). But from within container 1 I can't ping container 2 by name (nor vice versa).
According to this I should be able to ping by container name: https://docs.docker.com/network/network-tutorial-standalone/#use-user-defined-bridge-networks
What am I doing wrong?
//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
What am I doing wrong?
I've reviewed these, that seem to have similar issues but no definitive result. Except one solution to specifically allocate an IP to the container, which I don't like the idea of.
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)?
Upvotes: 1
Views: 758
Reputation: 2421
Wow after all that it was really simple. I just needed to assign my own name, not accept the docker issued name.
//NOTE THE ADDITION OF --NAME SWITCH
PS C:\Users\johng\source\repos\Ontic5\etrade-rtd\RtdActorSystemOutOfProc> docker run --name mysqlcontainer -e MYSQL_ROOT_PASSWORD=my-secret-pw -e MYSQL_DATABASE=mydatabase -p 3306:3306 --network testnet -d mysql:latest
0bfd4b7ff990ca2ffba8d8a200e33b7c6cee7cc422dad84f50311bfe46cdd468
//NOW CAN PING JUST FINE
PS C:\Users\johng\source\repos\Ontic5\etrade-rtd\RtdActorSystemOutOfProc> docker exec -it myexecontainer bash
root@a932138635fd:/app# ping mysqlcontainer
PING mysqlcontainer (172.18.0.3) 56(84) bytes of data.
64 bytes from mysqlcontainer.testnet (172.18.0.3): icmp_seq=1 ttl=64 time=0.049 ms
64 bytes from mysqlcontainer.testnet (172.18.0.3): icmp_seq=2 ttl=64 time=0.050 ms
Upvotes: 1