如何在Docker多阶段构建中删除上一阶段的图像

时间:2018-05-15 18:48:42

标签: docker

这是我的Dockerfile

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.12/angular.min.js"></script>

<div ng-app="app" ng-controller="ctrl">

   <select ng-model="sel" ng-change="filter()">
      <option ng-repeat="month in months" value="{{month.number}}">{{month.month}}     </option>
   </select>

    
  {{events}}
</div>

这将创建2个图像

FROM microsoft/aspnetcore-build as build-stage
ARG source=.
WORKDIR /app
COPY $source/sample-api.csproj .
RUN dotnet restore
COPY $source .
RUN dotnet publish -o /publish

FROM microsoft/aspnetcore
WORKDIR /sample-api
COPY --from=build-stage /publish .
EXPOSE 3000
ENTRYPOINT dotnet sample-api.dll

是否可以从第二阶段删除第一阶段图像REPOSITORY TAG IMAGE ID sample-api latest <none> <none> ?执行第二阶段的COPY <none>

后,不再需要它

1 个答案:

答案 0 :(得分:4)

此Docker行为是故意的,它将此图像保留为缓存目的 - 当下次触发构建时。

目前在构建时无法删除它。

摆脱此图片的唯一选择是手动删除它。许多可能性之一:

$ docker image prune

之后执行。此命令将删除所有悬空图像 - 包括您提到的图像。

ticket ref