gpt4 book ai didi

docker - docker 是否自动创建端口映射?

转载 作者:行者123 更新时间:2023-12-02 20:56:48 26 4
gpt4 key购买 nike

我在Visual Studio 2019中创建了一个简单的asp.net核心应用程序,并添加了docker支持。

Dockerfile,.dockerignore和docker-compose文件均已创建。

Add docker support to visual studio project

在命令提示符中,我导航到存在docker-compose.yml文件的文件夹,然后运行命令

docker-compose up

我看到容器已创建并且发生了端口映射,因此我可以在浏览器中浏览Web应用程序。

所以当我在容器上运行以下检查命令时
docker inspect --format="{{ .NetworkSettings.Ports}}" ContainerId

我得到这样的东西
map[80/tcp:[{0.0.0.0 32782}]]

现在,我可以使用 http://localhost:32782/index.html浏览该应用了

接下来,如果我拆下容器
docker-compose down

容器被停止并删除。创建的图像仍然存在。

现在,当我执行docker运行该图像以启动容器时
docker run -it --rm  ae39

创建了一个新的容器,但是我无法浏览该应用程序,因为没有从容器到主机的端口映射。使用run命令时,必须明确指定此名称。只有这样,我才能浏览主机中容器内部运行的应用程序。

但是当我使用docker compose时,我不必指定端口映射。发生了一些神奇的事情,并且为我创建了端口映射。请注意,docker-compose.yml文件是平面 Vanilla 文件,不包含任何端口映射。 Dockerfile也是如此。它们包括在下面以供引用。

我的问题是docker是否会自动创建端口映射?如果可以,怎么办?这是使用Visual Studio 2019进行的操作
version: '3.4'

services:
generator31:
image: ${DOCKER_REGISTRY-}generator31
build:
context: .
dockerfile: generator31/Dockerfile

dockerfile在这里。
#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80

FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["generator31/generator31.csproj", "generator31/"]
RUN dotnet restore "generator31/generator31.csproj"
COPY . .
WORKDIR "/src/generator31"
RUN dotnet build "generator31.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "generator31.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "generator31.dll"]

最佳答案

通过在dockerfile中使用EXPOSE标签,它告诉平台您正在使用该端口,需要映射该端口。使用docker-compose时,它会看到并自动将其映射到一个随机的开放端口。但是,EXPOSE关键字不会公开任何端口。它只是用来告诉您正在使用的平台“您可以为我提供此端口吗”,并依靠该平台为您完成此操作。

如果您希望端口每次都在主机上映射到特定端口,则可以在docker-compose.yml(host_machine_port:container_port)中将“端口”添加到服务中

关于docker - docker 是否自动创建端口映射?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62482720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com