首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取运行容器的完整港口详细信息

如何获取运行容器的完整港口详细信息
EN

Stack Overflow用户
提问于 2020-07-02 21:48:53
回答 2查看 1K关注 0票数 0

我正在学习码头作为一个初学者,我发现一个信息混乱。以下是步骤详细信息:

  1. 从码头集线器提取图像
  2. 运行图像

现在,我在CLI中看到了任何半端口细节,由于这些细节,我无法获得正确的端口ID。

但是当我通过KITEMATIC运行相同的图像并检查运行容器的状态时,它就正确地显示了我。

详情请参阅下面的截图:

共享Pic中的第一线显示了港口的完整细节(KITEMATIC中已启动的集装箱),第二线显示的不是完整的。

我想知道造成这种差异的原因,以及如何解决它。

EN

回答 2

Stack Overflow用户

发布于 2020-07-03 01:13:47

docker ps的第一行中,使用以下命令发布端口

代码语言:javascript
复制
docker run -it -p 32773:80 -p 32772:443 static-site

这就是为什么您要看到HOST_PORT->Container_PORT,以便在需要发布端口的另一个容器上看到相同的响应。

代码语言:javascript
复制
docker run -it --rm -p 80:80 -p 443:443 your_image

80:80指的是HostPort:ContainerPort

票数 0
EN

Stack Overflow用户

发布于 2020-07-03 01:27:24

图像可以公开一个端口。这是从图像创建者到那些使用图像的文档。它会告诉您,默认情况下,容器中的应用程序正在侦听哪些端口。当您运行一个具有公开端口的容器,但没有在主机上发布它时,您将只看到docker container ls中列出的容器端口。这也只是目前的文档,还没有配置坞网络来使用该容器端口,所以docker让您知道,应用程序可能正在侦听该端口的容器内部:

代码语言:javascript
复制
$ 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

如果将容器发布到特定港口,您将看到所需的列表:

代码语言:javascript
复制
$ 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标志(大写)的端口,它查看所有公开的端口,并将它们映射到未使用的高编号端口:

代码语言:javascript
复制
$ 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容器:

代码语言:javascript
复制
$ docker container port publish_all 80
0.0.0.0:32768

通过对图像的检查,您可以看到公开的端口:

代码语言:javascript
复制
$ docker image inspect nginx --format '{{json .Config.ExposedPorts}}' | jq .
{
  "80/tcp": {}
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62705522

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档