docker 对接器合成时获得过多悬挂图像

0md85ypi  于 2022-12-26  发布在  Docker
关注(0)|答案(2)|浏览(120)

我想在dotnet核心映像中集成python,因为我需要执行python脚本。当我执行这个DockerFile时,会创建很多悬空映像。
Dangling Images
还有,有没有什么合适的方法来集成一个python解释器?例如,我会在.net核心容器中获得一个URL,然后我想把那个URL传递给python容器。我们如何完成这个任务呢?我是Docker的新手。

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim  AS base
RUN apt-get update && apt-get install -y --no-install-recommends wget
RUN apt-get update && apt-get install -y python3.7 \
 && apt-get clean \
 && rm -rf /var/lib/apt/lists/*
RUN mkdir -p tmp
WORKDIR /tmp
RUN wget https://github.com/projectdiscovery/subfinder/releases/download/v2.4.4/subfinder_2.4.4_linux_amd64.tar.gz
RUN tar -xvf subfinder_2.4.4_linux_amd64.tar.gz
RUN mv subfinder /usr/local/bin/
#Cleanup
#wget cleanup
RUN rm -f subfinder_2.4.4_linux_amd64.tar.gz
FROM base AS final
RUN mkdir app
WORKDIR /app
EXPOSE 80
EXPOSE 443
COPY Publish/ /app/
ENTRYPOINT ["dotnet", "OnePenTest.Api.dll"]
icomxhvb

icomxhvb1#

由于映像是不可变的,因此您所做的任何更改都会导致创建新映像,因为合成文件指定了构建命令,所以在启动容器时将重新运行构建命令。
如果您正在使用COPY合成的任何文件发生更改,则不再使用当前的映像缓存,它将在不删除旧映像的情况下构建新映像。
可以使用以下命令构建文件
sudo docker-compose build --force-rm [--build-arg key=val...] [SERVICE...]
docker build --rm -t <tag>
选项--force-rm在成功构建后删除中间容器。

zazmityj

zazmityj2#

只需配置您的docker-compose.yaml,然后使用以下命令运行:

$ docker compose down --remove-orphans # if needed to stop all running containers
$ docker compose build
$ docker compose up --no-build

将标志--no-build添加到docker compose up中。
参考:https://docs.docker.com/engine/reference/commandline/compose_up/

相关问题