从远程服务器连接到码头应用程序

对于如何在Docker中管理端口和TCP连接有一个困惑(我认为)。 目前我有一个服务器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与其他应用程序(而不是码头)试图连接到正在侦听端口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) 

所以,1)我不知道它是如何读取4444 / tcp,0.0.0.0:9010-> 4445 / tcp是什么意思?

这意味着来自容器的端口4445将作为主机服务器上的端口9010从任何接口提供。

要从服务器B访问您的容器,应该使用以下命令: hostname-of-container-host :9010

如果希望服务从主机的端口4445可用,则需要使用-p 4445: 从容器中提供服务的端口