gpt4 book ai didi

linux - Docker 不下载推荐的包

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:02:27 24 4
gpt4 key购买 nike

我正在为 Python 应用程序使用 docker。

FROM python:3.5-slim
WORKDIR /abc
ADD . /abc
RUN apt-get update && \
apt-get install -y --no-install-recommends \
curl \
gcc \
python3-dev \
musl-dev \
&& \
pip install -r requirements.txt &&\
apt-get clean && \
rm -rf /var/lib/apt/lists/* &&\
apt-get purge -y --auto-remove gcc

因此,每当我运行 docker build 命令时,它都会首先运行 apt-get update 命令。

使用更新命令,它还会下载许多推荐的包并花费很长时间构建。

如何阻止 Ubuntu 安装推荐的软件包并更快地构建 docker?

注意:在 Dockerfile 中,apt-get --no-install-recommends update 不起作用;它仍在下载包。

最佳答案

apt-get update 不应安装任何东西。 apt-get update 唯一应该做的就是更新可用包的本地描述。但这并没有下载那些包——它只是下载了更新的描述。这可能需要一段时间。

apt-get install 当然会安装软件包。为了安装这些包,它需要下载它们。使用 --no-install-recommends 告诉 apt-get 不要安装“推荐的包”。例如,如果您安装 vim,还有许多插件也被推荐并作为单独的包提供。使用该开关,将不会安装那些 vim 插件。当然,安装您选择的软件包也可能需要一段时间。

您正在做的是使用 &&\ 将所有这些放入一个单个 docker 命令中。因此,每次您重建您的图像时,您都必须每次都这样做,因为包列表每天都在变化,有时甚至多次变化每天。

运行 apt-get 后,尝试将 pip install -r requirements.txt 移动到它自己的 RUN 命令。如果那能满足您的要求,那么我建议您阅读并了解更多有关 Docker 的工作原理的信息。尤其重要的是,了解每个命令如何添加一个新层,以及单个层中的任何动态信息如何导致构建时间过长,因为该层会随着大量更改而频繁更改。

此外,您可能想要移动 ADD 。/abcRUN 命令之后。您对正在添加的文件(我假设是源代码)所做的任何更改都会使表示已执行的 apt-get 命令的层无效。由于它已失效,因此需要重建。如果您正在积极从事和开发这些项目,那么很容易导致apt-get 每次您构建镜像时执行。

您可以搜索大量资源,讨论如何在使用 Docker 时优化您的时间。我不会推荐任何特定的,并将其留给您学习。

关于linux - Docker 不下载推荐的包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57207935/

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