如何删除apt包索引?

Jus*_*ing 9 apt docker

我注意到许多基于 Debian/ubuntu 的 docker 镜像,你必须apt-get update在安装任何软件包之前做一个。缓存是完全清楚的。我觉得我在做完我的RUN apt-update && apt-get install -y whatever. 我不知道该怎么做。是否有命令,或者我只是rm -rfq 文件夹?

小智 8

当你构建一个 docker 镜像时,你会尽量保持它最小。因此,谁构建安装包的映像会删除缓存以保持较小。结果是,apt-get update如果您想安装任何软件包,就必须运行。

由于执行的每个 docker 命令都会生成一个层,它的内容将“永远”保留在那里,一旦您完成安装包,您也想删除缓存。

执行此操作的两种方法是以下任一方法:

  1. rm -rf /var/cache/apt/archives.

或者

  1. apt-get clean

清除检索到的包文件的本地存储库。它从 /var/cache/apt/archives/ 和 /var/cache/apt/archives/partial/ 中删除除锁定文件之外的所有内容。

(来源:手册页)


wis*_*cky 5

rm -rf /var/lib/apt/lists/*

它在Docker 最佳实践中

当您通过删除/var/lib/apt/lists它来清理 apt 缓存时,它会减小图像大小,因为 apt 缓存未存储在图层中。

/var/cache/apt/archives里面没有太多数据。比较du这两个目录之间的比较。


小智 5

正如大卫的回答所说,你通常apt-get cleanrm -rf /var/cache/apt/archives。这将删除包缓存,根据手册,它包含下载的包本身。

但是,根据 Docker 的最佳实践apt-get clean 已在任何官方 Ubuntu/Debian 映像上为您完成。


在这种情况下,唯一需要清理的是存储库索引缓存:您只需要

rm -rf /var/cache/apt/lists.


小智 5

尝试了一下码头工人。apt-get clean仍然保留一些东西(例如索引文件)。因此,IMO,最好rm -rf /var/cache/apt/archives /var/lib/apt/lists获得较小的图像。