Docker 镜像加速与构建缓存优化:国内实战配置

在使用 Docker 进行开发或部署时,国内用户最常遇到的两个痛点:拉取镜像慢(尤其是 Docker Hub)和 构建缓存占满磁盘
本文分享一套经过验证的 Docker Engine 配置,既能显著提速镜像拉取,又能自动控制缓存占用空间。

一、最终配置(JSON)

将以下内容写入 Docker Engine 的 daemon.json(通过 Docker Desktop 的 “Docker Engine” 界面或服务器的 /etc/docker/daemon.json):

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "registry-mirrors": [
    "https://docker.1ms.run",
    "https://docker.xuanyuan.me"
  ]
}

在这里插入图片描述

二、配置解读

1. 镜像加速(registry-mirrors)

  • https://docker.1ms.run
  • https://docker.xuanyuan.me

这两个是国内可用的 Docker Hub 镜像站。当你执行 docker pull 时,Docker 会优先从这些镜像站拉取,速度通常比直接从 Docker Hub 快数倍甚至数十倍。

⚠️ 镜像站属于第三方服务,生产环境建议自建或使用阿里云/腾讯云等提供的稳定镜像加速地址。

2. 构建缓存自动清理(builder.gc)

"gc": {
  "enabled": true,
  "defaultKeepStorage": "20GB"
}
  • enabled: true:开启 BuildKit 的自动垃圾回收。
  • defaultKeepStorage: "20GB":当 Docker 构建缓存(/var/lib/docker 中的 buildkit 数据)超过 20GB 时,自动删除最旧的未使用的缓存。

效果:你再也不用手动执行 docker builder prune 或担心磁盘被缓存占满。只要磁盘总使用量(不只缓存)达到某个阈值,GC 就会自动工作。

3. 关闭实验特性(experimental: false)

保持稳定,避免不必要的特性干扰。

三、如何应用配置

如果你使用 Docker Desktop(Windows / Mac)

  1. 点击系统托盘中的 Docker 图标 → Settings
  2. 左侧选择 Docker Engine
  3. 将上面的 JSON 粘贴进去(替换原有内容)
  4. 点击右下角 Apply & Restart

截图中的界面正是 Docker Desktop 的 “Engine” 配置页。

如果你使用 Linux 服务器

sudo vi /etc/docker/daemon.json
# 粘贴上述 JSON
sudo systemctl restart docker

四、验证配置生效

检查镜像加速器

docker info | grep -A 5 "Registry Mirrors"

应该看到你配置的两个地址。

检查 GC 配置

docker buildx inspect --bootstrap | grep -A 10 "GC"

会输出类似:

GC:
  Enabled: true
  DefaultKeepStorage: 20GB

五、常见问题

Q:这两个镜像站稳定吗?
A:它们是社区维护的公开镜像站,通常可用,但建议持续关注。如果你在企业内部,更应该使用阿里云、华为云等官方加速器(需注册,免费)。

Q:20GB 的缓存保留阈值够用吗?
A:对于大多数开发场景(单个项目 ≤ 10GB 缓存)足够。如果你频繁构建多个大型项目(如 Android 镜像、深度学习环境),可调整为 "40GB"

Q:开启 GC 后数据会丢失吗?
A:只删除构建缓存(docker build 产生的中间层),不会影响已拉取的镜像、运行中的容器、卷或网络。

六、总结

设置 作用 推荐值
registry-mirrors 加速 docker pull 国内镜像站地址
builder.gc.enabled 自动清理构建缓存 true
builder.gc.defaultKeepStorage 缓存保留上限 20GB ~ 50GB

这套配置在 “速度”“磁盘空间” 之间取得了较好的平衡,尤其适合日常开发、CI 环境和个人服务器。

现在就去修改你的 Docker Engine 配置,享受丝滑的镜像拉取和自动化的磁盘管理吧! 🚀


附:Docker Desktop 界面中的 “Engine running” 状态显示当前守护进程正常,RAM/CPU/Disk 占用可供参考。

如果你对 BuildKit GC 的更高级策略(比如按缓存类型设置保留时间)感兴趣,欢迎留言交流。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐