Caching 使用docker/host卷时如何保留apt缓存存档目录

Caching 使用docker/host卷时如何保留apt缓存存档目录,caching,ubuntu,chef-infra,docker,apt-get,Caching,Ubuntu,Chef Infra,Docker,Apt Get,用例相当简单。我正在对接我们的本地资源调配(利用chef来配置我们的ubuntu服务器)。我正在使用几个数据卷共享我想要作为docker容器缓存的主机目录: 例如: 然而,/var/cache/apt/archives目录中的debian包文件在每次安装包后都会被吹出。有人能告诉我这在docker和解决方案中发生的地方吗,这样我就可以很好地跨容器保存apt get缓存了 提前感谢共享/var/cache/apt/archives似乎是一个脆弱的解决方案。也许您应该尝试设置一个运行apt cach

用例相当简单。我正在对接我们的本地资源调配(利用chef来配置我们的ubuntu服务器)。我正在使用几个数据卷共享我想要作为docker容器缓存的主机目录: 例如:

然而,/var/cache/apt/archives目录中的debian包文件在每次安装包后都会被吹出。有人能告诉我这在docker和解决方案中发生的地方吗,这样我就可以很好地跨容器保存apt get缓存了


提前感谢

共享/var/cache/apt/archives似乎是一个脆弱的解决方案。也许您应该尝试设置一个运行apt cacher ng的容器,并在其他容器上配置apt以使用该代理


Docker解释了如何设置它。

意识到我需要从Docker ubuntu基本映像中删除“/etc/apt/apt.conf.d/no cache”文件


其中有一些钩子可以在安装后从缓存中删除debian包(以减少容器中占用的空间)

Thomas,感谢您的建议;我会看看那篇文章。虽然出于我自己的启发,你知道为什么这些包裹会被移除吗?我正在利用其他卷来执行与缓存相关的行为,这些行为在构建/运行期间不会出现问题,因此我想知道是否有一些apt get clean操作正在幕后进行。删除缓存的deb包def。以前单独使用vagrant+chef时没有发生过。我不知道,但是有chef和vagrant供应确实会让很多人怀疑某些适当的行为。可能是一个愚蠢的猜测,但apt也可能使用可能存储在其他地方的索引文件跟踪其缓存中的内容。如果多个docker映像使用相同的装入卷,则可能会遇到一些奇怪的问题。如果两个docker映像大致同时旋转,则一个容器可能会覆盖另一个容器正在使用的文件。apt cacher ng(加上apt代理设置)的优点是可以在LAN上安全地缓存包。您是在缓存docker映像创建(并行性不是问题),还是在修改正在运行的容器,就好像它们是轻量级VM一样(具有bash或类似的入口点)?在buster上:
/etc/apt/apt.conf.d/docker clean
@ives层缓存是一个很好的折衷方案,但是如果您的大部分时间由于某些原因浪费在包上,为什么不绑定挂载在本地:它将像Vagrant的插件一样缓存包管理器的东西-在gitlab ci中:它将在每个构建上打包/解包缓存目录,所以在我的情况下,至少看起来没有任何具体的风险,只是速度提升,而不必维护apk/apt/yum/pip/npm等的缓存代理。
docker run -d -P -h docker -v /foo/apt-cache:/var/cache/apt/archives foo:base