我对如何管理docker中的端口和TCP连接感到困惑(我认为)。目前我有一个运行一些dockers容器的服务器A,我对在端口4444中运行的应用程序更感兴趣,当我输入docker container ls
时,我得到:
4d2c0db7e23c oryd/hydra:latest "/bin/sh" 27 minutes ago Up 27 minutes 4444/tcp, 0.0.0.0:9010->4445/tcp determined_snyder
7c586393ef61 oryd/hydra:latest "/bin/sh -c '/go/b..." 34 minutes ago Up 34 minutes 0.0.0.0:9000->4444/tcp someContainer
所以, 1)我不知道它是怎么读的4444/tcp, 0.0.0.0:9010->4445/tcp
是什么意思?
然后,我有一个服务器B与其他应用程序(而不是docker)试图连接到正在侦听端口4444的容器,但我得到:
connectex: No connection could be made because the target machine actively refused it.
2)它真的是在4444端口运行的应用程序吗?这就是我对如何阅读第1点感兴趣的原因
我必须说我输入了服务器A:sudo lsof -i -P -n
并且与docker相关的唯一寄存器显示:
docker-pr 15057 root 4u IPv6 486152035 0t0 TCP *:9000 (LISTEN)
docker-pr 15224 root 4u IPv6 486156778 0t0 TCP *:9010 (LISTEN)
答案 0 :(得分:1)
所以,1)我不知道它是如何读取4444 / tcp,0.0.0.0:9010-> 4445 / tcp是什么 这意味着什么?
这意味着来自容器的端口4445将从任何接口作为主机服务器上的端口9010使用。
要从服务器B访问您的容器,您应该使用以下内容: hostname-of-container-host :9010
如果您希望从主机的端口4445获得服务,则需要使用-p 4445:来自容器的服务端口