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

问题描述 投票:0回答:1

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

$ 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。 我试图从主机建立(测试)与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 ...使用的端口和其余的连接被拒绝。

sockets docker tcp docker-container unix-socket
1个回答
1
投票

使用-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;'
© www.soinside.com 2019 - 2024. All rights reserved.