我正在学习码头作为一个初学者,我发现一个信息混乱。以下是步骤详细信息:
现在,我在CLI中看到了任何半端口细节,由于这些细节,我无法获得正确的端口ID。
但是当我通过KITEMATIC运行相同的图像并检查运行容器的状态时,它就正确地显示了我。
详情请参阅下面的截图:

共享Pic中的第一线显示了港口的完整细节(KITEMATIC中已启动的集装箱),第二线显示的不是完整的。
我想知道造成这种差异的原因,以及如何解决它。
发布于 2020-07-03 01:13:47
在docker ps的第一行中,使用以下命令发布端口
docker run -it -p 32773:80 -p 32772:443 static-site这就是为什么您要看到HOST_PORT->Container_PORT,以便在需要发布端口的另一个容器上看到相同的响应。
docker run -it --rm -p 80:80 -p 443:443 your_image80:80指的是HostPort:ContainerPort。
发布于 2020-07-03 01:27:24
图像可以公开一个端口。这是从图像创建者到那些使用图像的文档。它会告诉您,默认情况下,容器中的应用程序正在侦听哪些端口。当您运行一个具有公开端口的容器,但没有在主机上发布它时,您将只看到docker container ls中列出的容器端口。这也只是目前的文档,还没有配置坞网络来使用该容器端口,所以docker让您知道,应用程序可能正在侦听该端口的容器内部:
$ docker run -d --name unpublished --rm nginx
63291688813a75a8d9f0d383b4fbef30e93be8e89bd22fc80c2953da65d1d5e9
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
63291688813a nginx "nginx -g 'daemon of…" 41 seconds ago Up 39 seconds 80/tcp unpublished如果将容器发布到特定港口,您将看到所需的列表:
$ docker run -d --name exact -p 8080:80 --rm nginx
10f82a87d8dce2226c030ca5f23e7983b0f60673c0ec614302dc129dad4ba86d
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
10f82a87d8dc nginx "nginx -g 'daemon of…" 14 seconds ago Up 12 seconds 0.0.0.0:8080->80/tcp exact它看起来像是发布了所有带有-P标志(大写)的端口,它查看所有公开的端口,并将它们映射到未使用的高编号端口:
$ docker run -d --name publish_all -P --rm nginx
982afb237756e543820810cbd6366c8fa8569a386ff581cd7edc63557004e8c4
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
982afb237756 nginx "nginx -g 'daemon of…" 3 seconds ago Up 2 seconds 0.0.0.0:32768->80/tcp publish_all如果您想知道主机上发布了什么端口,特别是当您告诉docker使用未使用的高编号端口时,您可以使用port命令来查询这个问题,例如上面的publish_all容器:
$ docker container port publish_all 80
0.0.0.0:32768通过对图像的检查,您可以看到公开的端口:
$ docker image inspect nginx --format '{{json .Config.ExposedPorts}}' | jq .
{
"80/tcp": {}
}https://stackoverflow.com/questions/62705522
复制相似问题