我最近看到在Docker文件中使用了--no-cache-dir
。我以前从未见过那面旗帜而且帮助没有解释它:
--no-cache-dir Disable the cache.
答案 0 :(得分:35)
文档链接
https://pip.pypa.io/en/stable/reference/pip_install/#caching - @emredjan https://pip.pypa.io/en/stable/reference/pip_install/ - @mikea
答案 1 :(得分:18)
我认为在构建Docker映像时有充分的理由使用--no-cache-dir
。缓存通常在Docker映像中没有用,并且您可以通过禁用缓存来缩小映像大小。
答案 2 :(得分:1)
禁用pip缓存的另一个原因-如果您以不存在的用户身份运行pip,则将创建其主目录,但该目录由root拥有。
在chroot中构建Amazon AMI时,这会发生在我们身上-pip以构建器机器上的用户身份运行,而不是在构建AMI的chroot监狱中。这是有问题的,因为特定用户现在无法SSH到刚刚构建的内容,因为他们无法读取其.ssh目录。
我想不出任何其他原因来以不存在的用户身份运行pip,所以这是一个非常极端的情况。
答案 3 :(得分:1)
如果您的DockerFile中具有python依赖项,请减小docker映像的大小,因为您的私有注册表/人工工厂或部署服务可能会有大小限制。
答案 4 :(得分:0)
如果不使用--no-cache-dir
选项,安装某些pip软件包会出现权限错误。
Building wheels for collected packages: pyyaml, bottleneck, nvidia-ml-py3
WARNING: Building wheel for pyyaml failed: [Errno 13] Permission denied: '/home/user/.cache/pip/wheels/b1'
WARNING: Building wheel for bottleneck failed: [Errno 13] Permission denied: '/home/user/.cache/pip/wheels/92'
WARNING: Building wheel for nvidia-ml-py3 failed: [Errno 13] Permission denied: '/home/user/.cache/pip/wheels/7f'
chown /.cache
文件夹由于某种原因没有帮助,但是使用--no-cache-dir
可以正常工作。