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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

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;'

以上是关于Docker如何在特定端口(8080)上建立到容器的TCP连接?的主要内容,如果未能解决你的问题,请参考以下文章

docker操作的一些例子

阿里云配置Nginx访问(docker部署)

docker运行web容器及容器互连

如何在 docker 文件中发布端口

如何在docker容器中开启两个端口映射

docker端口的映射顺序