Docker 如何在特定端口 (8080) 上与容器建立 TCP 连接?

Docker how can I Establish TCP connection to container on a specific port(8080)?


我正在尝试通过启动以下命令来公开容器端口:

$ docker run -p 8080:8080 --name container1 -d ubuntu /bin/bash -c 'while true;\
do echo Hello $HOSTNAME | nc -l 8080; done;'

作为 $ docker ps 的结果:

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
9cd601ae9c7a        ubuntu              "/bin/bash -c 'while…"   2 seconds ago       Up 1 second         0.0.0.0:8080->8080/tcp   container1

P.S : 容器IP地址为172.17.0.2 .
我尝试使用

host 建立(测试)到 8080 端口上 container1 的 TCP 连接

我得到的只是:正在使用的端口 nc -p ...连接被拒绝 其余的。

使用 -p 8080:8080 时,您正在将容器端口 8080 映射到主机端口 8080。因此,您需要使用 nc localhost 8080 从主机访问容器。

顺便说一句:最新的 ubuntu 图片不包含 nc。您可能想尝试 ubuntu:trusty.

docker run -p 8080:8080 --name container1 -d ubuntu:trusty /bin/bash -c 'while true; do echo Hello $HOSTNAME | nc -l 8080; done;'