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 8080 172.17.0.2 8080
$ nc 172.17.0.2 8080
$ exec < /dev/tcp/172.17.0.2/8080
我得到的只是:正在使用的端口 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;'
我正在尝试通过启动以下命令来公开容器端口:
$ 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 .
我尝试使用
$ nc -p 8080 172.17.0.2 8080
$ nc 172.17.0.2 8080
$ exec < /dev/tcp/172.17.0.2/8080
我得到的只是:正在使用的端口 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;'