Сборка Docker не удаляет временные образы при сборке многоступенчатого файла Docker - PullRequest
0 голосов
/ 10 октября 2019

У меня есть файл Docker, который строит мой .Net Core API во временном образе, а затем создает образ из сгенерированных файлов. Насколько я знаю, временное изображение должно быть удалено автоматически, но в моих тестах оно не было удалено. Я использую Docker Desktop для Windows. Файл 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. В чем может быть причина? Как я могу предотвратить оставление этого свисающего изображения после сборки?

Ответы [ 2 ]

1 голос
/ 10 октября 2019
docker image rm [OPTIONS] IMAGE [IMAGE...]

Опции

--force , -f        Force removal of the image
--no-prune      Do not delete untagged parents
0 голосов
/ 10 октября 2019
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", который показывает именно те промежуточные изображения, которые использовались на этапе строительства.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...