我试图通过启动以下命令来公开容器端口:
$ 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 ...
使用的端口和其余的连接被拒绝。
使用-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;'