【问题标题】:Getting too many dangling images on docker-compose up在 docker-compose up 上获取太多悬空图像
【发布时间】:2021-02-01 11:36:38
【问题描述】:

我想将 python 集成到 dotnet core 映像中,因为我需要执行 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"]

【问题讨论】:

    标签: python-3.x docker asp.net-core docker-compose dockerfile


    【解决方案1】:

    由于图像是不可变的,因此您所做的任何更改都会导致创建一个新图像,因为您的 compose 文件指定了构建命令,因此它会在您启动容器时重新运行构建命令。

    如果您使用COPY 编写的任何文件发生更改,则当前图像缓存将不再使用,它​​将构建新图像而不删除旧图像。

    可以使用下面的命令来构建你的文件

    sudo docker-compose build --force-rm [--build-arg key=val...] [SERVICE...]

    docker build --rm -t <tag>

    选项--force-rm 在成功构建后删除中间容器。

    【讨论】:

    • 如果它解决了您的问题,那么可以投票。所以会对社区有所帮助
    • 是的,我做到了。 @Ashok 我仍然对从不同的容器运行 python 脚本感到困惑。我是否需要以 Flask Http 端点之类的方式公开 python 脚本?或者有什么方法可以运行 python 脚本命令,例如: docker run -it --rm subdomainpythonimage python optsub.py -d ndtv.com -w list.txt 我需要从不同的容器执行上述命令。我想将 URL 传递给 python 脚本。
    • 你在说哪个问题。这与悬空图像有关
    • 不,它是不同的。但与这个悬空图像问题有点相关。因为当我尝试安装 python 图像时,会创建很多中间图像。所以,我需要单独使用python,但不知道该怎么做
    • 正如我之前提到的,您可以将python tar文件复制到容器中,并且可以在启动时解压。
    猜你喜欢
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 2018-04-18
    • 1970-01-01
    相关资源
    最近更新 更多