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




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

$ 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

PS:容器IP地址为172.17.0.2。
我尝试从主机建立(测试(到 8080 端口上的容器 1 的 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;'

相关内容

最新更新