docker
  • docker教程
  • advanced
    • Docker 构建缓存指南
    • Docker分配CPU资源
    • Dockerfile+Maven插件构建SpringBoot镜像(推荐)
    • Dockerfile构建SpringBoot镜像
    • idea配置docker
    • Docker Jenkins进阶配置
    • 基于jenkins容器部署SpringBoot应用构建镜像(基于Dockerfile+Maven插件构建)
    • Maven插件构建SpringBoot镜像(二)
    • 基于Maven插件为SpringBoot应用构建镜像并推送到远程_私人仓库(Docker Hub)
    • Maven插件构建SpringBoot镜像(一)
    • Docker MongoDB进阶配置
    • Docker 多阶段构建指南
    • Docker MySql进阶配置
    • Docker network进阶配置
    • Docker Nginx进阶配置
    • Docker空(none)镜像处理
    • Docker pip install --no-cache-dir
    • Docker redis进阶配置
  • concepts
    • docker、docker engine和docker desktop区别
    • 架构
    • 什么是容器?
    • 什么是镜像?
    • 什么是Docker?
    • 什么是仓库?
  • docker-compose
    • Docker Compose 锚点的用法
    • docker-compose 编排多服务
    • docker-compose 常用命令
    • docker-compose 部署jenkins
    • docker-compose安装mySql
    • docker-compose网络配置
    • docker-compose安装nginx
    • docker-compose安装redis
    • docker Compose 示例1
  • docker-hub
    • Docker Hub账号服务说明
  • install
    • CentOS Docker 安装
    • Debian Docker 安装
    • Docker 安装 Apache
    • Docker 安装 CentOS
    • Docker 安装 Elasticsearch
    • Docker 安装 GitLab
    • Docker 安装 Jenkins
    • Docker 安装 MongoDB
    • Docker 安装 MySQL
    • Docker 安装 Nginx
    • Docker 安装 Node.js
    • Docker 安装 PHP
    • Docker 安装 Portainer
    • Docker Python 官方镜像使用说明(TAG说明)
    • Docker 安装 Python
    • Docker 安装 Redis
    • Docker 安装 Tomcat
    • Docker 安装 Ubuntu
    • Docker 安装 Wordpress
    • Docker 国内镜像加速
    • MacOS Docker 安装
    • Ubuntu Docker 安装
    • Windows Docker 安装
  • manual
    • Docker attach 命令
    • Docker build 命令
    • Docker 清理命令
    • Docker命令大全
    • Docker commit 命令
    • docker-compose-run-command
    • Docker cp 命令
    • Docker create 命令
    • Docker diff 命令
    • Docker rm 命令
    • Docker exec 命令
    • Docker export 命令
    • Docker history 命令
    • Docker images 命令
    • Docker import 命令
    • Docker info 命令
    • Docker inspect 命令
    • Docker kill 命令
    • Docker load 命令
    • Docker login/logout 命令
    • Docker logs 命令
    • Docker network 命令
    • Docker pause/unpause 命令
    • Docker port 命令
    • Docker 常见问题
    • Docker ps 命令
    • Docker pull 命令
    • Docker push 命令
    • Docker rename 命令
    • docker-resources
    • Docker rm 命令
    • Docker rm 命令
    • Docker run 命令
    • Docker save 命令
    • Docker search 命令
    • Docker start/stop/restart 命令
    • Docker stats 命令
    • Docker tag 命令
    • Docker top 命令
    • Docker version 命令
    • Docker version 命令
    • Docker wait 命令
    • diff
      • Docker Compose 和 docker-compose 区别
      • Docker import、export 与 save、load 命令 区别
  • usage
    • Docker docker-compose 使用
    • Docker 容器连接
    • Docker 容器使用
    • Docker Dockerfile Ptyhon实战配置-1
    • Docker Dockerfile Ptyhon实战配置之多阶段构建-2
    • Docker Dockerfile
    • Docker 镜像使用
    • Docker Machine
    • Docker 仓库管理
    • Swarm集群管理
  • assets
    • mysql
      • my.cnf
Powered by GitBook
On this page
  • 具体解释
  • 缓存存储的默认路径
  • 为什么 --no-cache-dir 重要?
  • 总结

Was this helpful?

  1. advanced

Docker pip install --no-cache-dir

PreviousDocker空(none)镜像处理NextDocker redis进阶配置

Last updated 26 days ago

Was this helpful?

官方文档:

pip install --no-cache-dir 是一个常用的选项,它告诉 pip 在安装 Python 包时 不使用缓存,并且 不缓存安装包文件(如 .tar.gz 或 .whl 文件),从而避免这些缓存文件被保留在镜像中。这个选项的使用对于减小 Docker 镜像体积非常有帮助,特别是在构建镜像时,避免将不必要的缓存文件包含在镜像层中。

具体解释

在默认情况下,pip 会将下载的包缓存到本地缓存目录中(通常是 ~/.cache/pip 或 /root/.cache/pip)。这样做的目的是提高后续安装速度,因为如果你再次安装相同的包,pip 会直接从缓存中读取包,而不是重新下载。然而,缓存的包文件通常并不需要包含在 Docker 镜像中,这些缓存文件会导致镜像体积增大。

使用 --no-cache-dir

当你在 Dockerfile 中执行 pip install 时,可以加入 --no-cache-dir 选项,避免缓存文件被存储在镜像中。这样可以确保只有安装后的包被保留在镜像中,而不会有任何额外的缓存文件。

示例:

FROM python:3.9

WORKDIR /app

COPY requirements.txt .

# 安装依赖并避免缓存
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

CMD ["python", "app.py"]

在这个例子中,pip install --no-cache-dir 会确保在安装依赖时不缓存任何下载的包文件,避免这些文件被包含在镜像层中,从而减小镜像的体积。

缓存存储的默认路径

~/.cache/pip
~/Library/Caches/pip
%LocalAppData%\pip\Cache

为什么 --no-cache-dir 重要?

  1. 减小镜像体积: 安装过程中,pip 下载的包会存储在缓存目录中,而这些包并不需要被包含在最终的镜像中。使用 --no-cache-dir 可以避免将这些缓存文件添加到镜像层中。

  2. 避免不必要的文件: 缓存文件并不是最终运行环境所需要的,通常只是为了加速后续的安装过程。它们会占用额外的存储空间,增加 Docker 镜像的大小,而这对最终的生产镜像是没有任何意义的。

总结

  • 默认行为: pip install 会将下载的包文件缓存到本地,以便未来复用。

  • 使用 --no-cache-dir: 该选项可以防止 pip 缓存包文件,从而避免它们被包含在 Docker 镜像层中,减小镜像体积。

  • 推荐做法: 在 Dockerfile 中使用 pip install --no-cache-dir 以确保生成的镜像尽可能小,避免缓存文件的冗余。

https://pip.pypa.io/en/stable/topics/caching/#disabling-caching