Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux Docker没有';t下载推荐的软件包_Linux_Docker_Docker Compose_Dockerfile - Fatal编程技术网

Linux Docker没有';t下载推荐的软件包

Linux Docker没有';t下载推荐的软件包,linux,docker,docker-compose,dockerfile,Linux,Docker,Docker Compose,Dockerfile,我将docker用于Python应用程序 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

我将docker用于Python应用程序

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
命令

使用update命令,它还可以下载许多推荐的软件包,并且需要很长的构建时间

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


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

apt get update不应安装任何内容。apt get update应该做的唯一一件事就是更新可用软件包的本地描述。不过,它并没有下载这些包——它只是下载更新的描述。那可能需要一段时间

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

使用
&&&
将所有这些都放在一个docker命令中。因此,每次重建映像时,您都必须这样做,因为包列表每天都在更改,有时甚至每天更改多次

运行
apt get
stuff后,尝试将
pip install-r requirements.txt
移动到自己的
RUN
命令。如果这是你想要的,那么我建议你阅读并学习更多关于Docker如何在引擎盖下工作的知识。特别是,了解每个命令如何添加一个新层以及单个层中的任何动态信息如何导致较长的构建时间非常重要,因为层会随着大量更改而频繁更改

此外,您可能需要移动
ADD/abc
运行
命令后执行。对要添加的文件(我假设是源代码)所做的任何更改都将使表示已执行的
apt get
命令的层无效。因为它已经失效了,所以需要重建。如果您正在积极地处理和开发这些项目,那么很容易在每次构建映像时执行
apt get


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

感谢您写下答案,这非常有帮助,我正在不断改进项目的docker文件。再次非常感谢。但是由于我使用的是python:3.5-slim,每次
apt get update
都必须运行每个命令。是否有任何选项此命令需要花费更多时间?我感觉英语不是您的母语。我很难理解你在说什么。您是否尝试过将
ADD
语句移动到
RUN
语句之后?请接受我向您展示的概念。将其推广到其他命令。这应该会有帮助。感谢大家为改进docker文件所做的大量工作。