【问题标题】:Aspnet.core - Docker File creating anonymous imagesAspnet.core - Docker 文件创建匿名图像
【发布时间】:2018-12-31 21:59:27
【问题描述】:

在使用 Visual Studio 2017 提供的 docker 文件模板时,我意识到每次创建应用程序的映像时,总是会创建另外两个映像,而不是重复使用。为什么会出现这种情况?

【问题讨论】:

  • 构建镜像的命令是什么,项目版本是多少?我用docker build -f "C:\Users\xx\source\repos\WebApplication15\Dockerfile" -t webapplication15:dev1 --target base --label "com.microsoft.created-by=visual-studio" "C:\Users\xx\source\repos"做了一个测试,它重用了缓存。对于anonymous images,它会在构建时出现错误以及与多阶段一起使用时创建。你的 dockerfile 是什么?
  • 我正在使用命令 docker build -t ltstore 。
  • FROM microsoft/dotnet:2.2-aspnetcore-runtime AS base WORKDIR /app FROM microsoft/dotnet:2.2-sdk AS build WORKDIR /src COPY ["LtStore/*.*", "LtStore/" ] COPY ["LtStore.Core/LtStore.Core.csproj", "LtStore.Core/"] 运行 dotnet restore "LtStore/LtStore.csproj" COPY 。 . WORKDIR "/src/LtStore" RUN dotnet build "LtStore.csproj" -c Release -o /app FROM build AS publish RUN dotnet publish "LtStore.csproj" -c Release -o /app FROM base AS final WORKDIR /app COPY - -从=发布/应用程序。入口点 ["dotnet", "LtStore.dll"]
  • 尝试指定--target basebase是舞台。

标签: docker asp.net-core dockerfile


【解决方案1】:

Visual Studio 2017 中的 Dockerfile 模板在构建时使用中间图像。就像一个图像用作基础图像,中间容器图像用于构建输出并将其发布到您的基础图像中。在那之后,最终的图像被赋予一个标签。而其他人则没有任何存储库名称和标签。

【讨论】:

    【解决方案2】:

    您可以使用--cache-from 开关构建新图像以重用和加快构建过程,或使用--rm 删除中间和悬空图像 有关构建的更多信息:

    https://docs.docker.com/engine/reference/commandline/build/

    【讨论】:

    • 中间容器被移除,但图像没有。
    • 我在 crontab 中使用 docker rmi $(docker images -a -q) 来删除未使用的图像。
    猜你喜欢
    • 1970-01-01
    • 2018-02-02
    • 2019-06-18
    • 1970-01-01
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    • 2017-07-12
    • 2012-02-16
    相关资源
    最近更新 更多