全部学科
NodeJS全栈
nodejs
Python全栈
python
小程序首页
📅 2026-05-21 5 分钟 ✍️ juanwangdev

镜像加速与缓存

镜像拉取速度和缓存复用影响部署效率,下面介绍配置方法。

镜像加速器

配置 Mirror

JSON
// /etc/docker/daemon.json
{
  "registry-mirrors": [
    "https://mirror.ccs.tencentyun.com",
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}

重启生效:

Bash
sudo systemctl daemon-reload
sudo systemctl restart docker

验证配置

Bash
# 查看加速器配置
docker info | grep -A 5 "Registry Mirrors"

# 输出
Registry Mirrors:
  https://mirror.ccs.tencentyun.com/
  https://registry.docker-cn.com/

缓存机制

层缓存复用

Bash
# 第一次拉取
docker pull nginx:latest
# 下载所有层

# 第二次拉取相同标签
docker pull nginx:latest
# 复用本地缓存,无需下载

跨镜像复用

Bash
# 基于相同基础镜像的镜像共享层
docker pull ubuntu:22.04  # 基础层缓存

docker pull my-app:1.0   # 如果基于 ubuntu:22.04,复用基础层

构建缓存

dockerfile
# Dockerfile
FROM ubuntu:22.04  # 使用本地缓存
RUN apt-get update  # 首次构建下载
COPY . /app
RUN npm install
Bash
# 首次构建
docker build -t my-app .
# 下载基础镜像,执行所有指令

# 第二次构建(Dockerfile 未变)
docker build -t my-app .
# 复用所有缓存层

破坏缓存

Bash
# 禁用缓存
docker build --no-cache -t my-app .

# 破坏特定点之后的缓存
# Dockerfile 中某条指令变化,后续所有层重建

缓存清理

Bash
# 查看缓存使用
docker system df

# 清理构建缓存
docker builder prune

# 清理所有未使用资源
docker system prune

# 清理所有未使用的镜像
docker image prune -a

代理配置

JSON
// /etc/docker/daemon.json
{
  "proxies": {
    "http-proxy": "http://proxy.example.com:8080",
    "https-proxy": "http://proxy.example.com:8080",
    "no-proxy": "*.local,127.0.0.1"
  }
}

离线迁移

Bash
# 保存镜像为文件
docker save nginx:latest > nginx.tar

# 传输到离线机器
scp nginx.tar user@remote:~

# 加载镜像
docker load < nginx.tar

要点总结

  • registry-mirrors 配置镜像加速器,提升国内拉取速度
  • Docker 层缓存复用,相同层不重复下载
  • 构建缓存利用 Dockerfile 指令缓存,变化破坏后续缓存
  • docker builder prune 清理构建缓存,docker system prune 全面清理
  • 离线环境使用 docker save/load 迁移镜像

📝 发现内容有误?点击此处直接编辑

← 上一篇 私有仓库部署
下一篇 → 镜像签名与验证
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库