无法从Docker容器连接到另一个容器。连接被拒绝。

3

我正在尝试使用telnet从一个docker容器连接到另一个,但无论如何都会出现“telnet:无法连接到远程主机:连接被拒绝”的错误。

到目前为止,我执行的命令如下:

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

这是从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工作正常:

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

然后我尝试使用已发布的端口从一个容器连接到另一个容器。

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

当从另一个容器连接时,同样会发生这种情况。

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

这里有什么问题?
Docker版本:17.09.0 操作系统:Mac和Windows
1个回答

1
  1. 发布的端口可从主机访问,不用于容器间通信。

  2. 您正在覆盖为图像定义的任何命令,并启动bash,因此该进程是在容器中运行的唯一进程,容器内的应用程序根本没有启动。

您想要做的是以下内容:

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

然后连接到正在运行的容器。
$ docker exec -it nA bash

$ docker exec -it nB bash

实际上,并不是我执行的所有命令。在测试连通性之前,我在容器内运行了一些服务。在您的评论之后,现在很明显,这些服务必须在某个时候崩溃了,导致了这里的混乱。谢谢! - benji__
我同意端口808?和100?不适用于容器间通信,但为什么端口80(以及可能也包括443)不行呢? - bcag2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接