gpt4 book ai didi

构建多阶段docker文件时docker build不会移除临时镜像

转载 作者:行者123 更新时间:2023-12-02 19:23:06 26 4
gpt4 key购买 nike

我有一个 docker 文件,它在一个临时图像中构建我的 .Net Core API,然后使用生成的文件创建一个图像。据我所知,应该自动删除临时图像,但在我的测试中它没有被删除。我使用适用于 Windows 的 Docker 桌面。运行前和运行后的docker文件、镜像列表如下;

Docker文件;

FROM mcr.microsoft.com/dotnet/core/sdk:2.2-alpine AS build-env
WORKDIR /app

# Copy csproj and restore as distinct layers
COPY *.csproj ./
RUN dotnet restore

# Copy everything else and build
COPY . ./
RUN dotnet publish -c Release -o out

# Build runtime image
FROM mcr.microsoft.com/dotnet/core/aspnet:2.2-alpine
WORKDIR /app
COPY --from=build-env /app/out .
ENTRYPOINT ["dotnet", "CoreAPI1.dll"]

运行前的图片列表;

PS D:\temp\CoreAPI1\CoreAPI1> docker image ls                                                                           
REPOSITORY TAG IMAGE ID CREATED SIZE
mcr.microsoft.com/dotnet/core/sdk 2.2-alpine 3a2253204e79 4 weeks ago 1.48GB
mcr.microsoft.com/dotnet/core/aspnet 2.2-alpine 820b2f3a9c7a 4 weeks ago 168MB
PS D:\temp\CoreAPI1\CoreAPI1>

命令测试;

docker build -t coreapi1 .
docker build --rm -t coreapi1 .

构建docker文件后的镜像列表;

PS D:\temp\CoreAPI1\CoreAPI1> docker image ls                                                                           
REPOSITORY TAG IMAGE ID CREATED SIZE
coreapi1 latest d8cb00730c52 3 minutes ago 168MB
<none> <none> 1105d14991b3 3 minutes ago 1.48GB
mcr.microsoft.com/dotnet/core/sdk 2.2-alpine 3a2253204e79 4 weeks ago 1.48GB
mcr.microsoft.com/dotnet/core/aspnet 2.2-alpine 820b2f3a9c7a 4 weeks ago 168MB
PS D:\temp\CoreAPI1\CoreAPI1>

查看带有名称和标签的图像。

Docker 版本是 19.03.2。可能是什么原因?如何防止在构建后留下这个悬空图像?

最佳答案

for image in $(docker images -f "dangling=true" -q)
do
docker rmi -f $image
done

docker images -q -f "dangling=true"| xargs docker rmi

这里的关键是 "dangling=true" 过滤器,它准确显示在构建阶段使用的那些中间图像。

关于构建多阶段docker文件时docker build不会移除临时镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58322755/

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