Can't connect from docker container to another. Connection refused

Viewed 2182

I'm trying to establish a connection from one docker container to another using telnet, however I get "telnet: Unable to connect to remote host: Connection refused" error all the time.

Commands I've executed so far:

docker run -dit --name nA --net mynet -p 8081:80 -p 1001:443 test_image:1.0 bash

docker run -dit --name nB --net mynet -p 8080:80 -p 1000:443 test_image:1.0 bash

That's the output from docker inspect mynet

"Containers": {
        "1df3f3821710b3f8103fe79e338d709a93baf301dafc015bb5f1e162bca206de": {
            "Name": "nB",
            "EndpointID": "bf7cbc2e60ddb99cd3b8bd416b066787840ced6de74eb1961b4f9663a28fdd80",
            "MacAddress": "02:42:ac:13:00:03",
            "IPv4Address": "172.19.0.3/16",
            "IPv6Address": ""
        },
        "7aea617e121eda0884ae7ce46e1534800af2d30822f3899f69c4165a40c1370d": {
            "Name": "nA",
            "EndpointID": "7a60026517ff0b1b337a5af9ccf8d7dc9c896606196bcb1bafe537e6fddaa8dc",
            "MacAddress": "02:42:ac:13:00:02",
            "IPv4Address": "172.19.0.2/16",
            "IPv6Address": ""
        }
    },

Ping works perfectly:

root@1df3f3821710:/# ping nA
PING nA (172.19.0.2) 56(84) bytes of data.
64 bytes from nA.mynet (172.19.0.2): icmp_seq=1 ttl=64 time=0.141 ms
64 bytes from nA.mynet (172.19.0.2): icmp_seq=2 ttl=64 time=0.261 ms

Then I'm trying to connect from one container to another using the ports that has been published.

root@1df3f3821710:/# telnet nA 8081
Trying 172.19.0.2...
telnet: Unable to connect to remote host: Connection refused
root@1df3f3821710:/# telnet nA 1001
Trying 172.19.0.2...
telnet: Unable to connect to remote host: Connection refused
root@1df3f3821710:/# telnet nA 80
Trying 172.19.0.2...
telnet: Unable to connect to remote host: Connection refused
root@1df3f3821710:/# telnet nA 443
Trying 172.19.0.2...
telnet: Unable to connect to remote host: Connection refused

The same happens when connecting from the other container.

root@7aea617e121e:/# telnet nB 8080
Trying 172.19.0.3...
telnet: Unable to connect to remote host: Connection refused
root@7aea617e121e:/# telnet nB 80  
Trying 172.19.0.3...
telnet: Unable to connect to remote host: Connection refused
root@7aea617e121e:/# telnet nB 1000
Trying 172.19.0.3...
telnet: Unable to connect to remote host: Connection refused
root@7aea617e121e:/# telnet nB 443 
Trying 172.19.0.3...
telnet: Unable to connect to remote host: Connection refused

What is the problem here?

Docker version: 17.09.0 OSes: Mac and Windows

1 Answers
  1. The published ports are available from the host, they aren't used for inter container communication.

  2. You are overriding whatever command defined for your image and starting bash instead, so thats the only process running on your container and your applications inside the container aren't starting at all.

What you meant to do is the following

docker run -d --name nA --net mynet -p 8081:80 -p 1001:443 test_image:1.0
docker run -d --name nB --net mynet -p 8080:80 -p 1000:443 test_image:1.0

Then connect to the running containers

$ docker exec -it nA bash

$ docker exec -it nB bash
Related