--publish-all 不发布 EXPOSEd 端口

问题描述 投票:0回答:1

这是一个基本的 Docker NGINX 镜像:

FROM nginx:alpine
COPY src /usr/share/nginx/html
EXPOSE 80

图像的元数据包括暴露的端口:

> docker inspect --format '{{json .Config.ExposedPorts}}' ...
{"80/tcp":{}}

但是当使用

docker run --publish-all
运行它时,服务器无法访问。
必须使用
docker run --publish 80:80
运行。

但是

EXPOSE
的目的不是记录图像的端口,以便无需通过
--publish-all
明确列出即可发布它们吗?

docker port
1个回答
0
投票

--publish-all
标志发布“暴露的端口到临时端口”。

所以,你会得到类似的东西:

docker container inspect cdb234112f53 --format=json \
| jq -r '.[0].NetworkSettings.Ports'
{
  "80/tcp": [
    {
      "HostIp": "0.0.0.0",
      "HostPort": "32769"
    }
  ]
}

在本例中,容器端口 80 映射到主机的 32769(而不是 80)。

© www.soinside.com 2019 - 2024. All rights reserved.