我正在尝试通过启动以下命令来公开容器端口:
$ 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;'