缓存服务在Docker环境中分三类:Registry代理缓存(如Harbor Proxy Cache或registry mirror)用于加速docker pull,需配置upstream、缓存策略及客户端daemon.json;运行时缓存(如Redis/Memcached)以独立容器提供应用数据缓存,通过网络连接;Apt-Cacher-NG专用于apt包下载缓存,适用于CI构建提速。

缓存服务在 Docker 环境中主要分两类:一类是为镜像拉取加速的 Registry 代理缓存(比如 Harbor、registry mirror),另一类是为应用提供运行时数据缓存的 Redis/Memcached 服务。配法完全不同,得先明确目标。
要加速 docker pull?配 Registry 代理缓存
核心是让本地请求走内网缓存,而不是反复连 Docker Hub。推荐用 Harbor 或轻量 registry mirror:
- Harbor 原生支持 Proxy Cache 模式,配置 upstream(如
https://registry-1.docker.io)、设置 regex 缓存策略(例如只缓^library/(nginx|alpine|redis)$)、分配 cache_size 和 cache_ttl 即可 - 若团队规模小,可用官方 registry 镜像 + docker-compose 快速搭 mirror:暴露 5000 端口,配置
proxy.remote和proxy.username/password(如需认证) - 客户端统一改
/etc/docker/daemon.json,加"registry-mirrors": ["https://harbor.internal"],重启 Docker 后所有docker pull nginx自动走缓存
要给应用加运行时缓存?配 Redis 或 Memcached
这类服务本身是独立容器,应用通过网络连接它,不参与镜像拉取流程:
- Redis:直接
docker run -d --name redis-cache -p 6379:6379 -v ./redis.conf:/usr/local/etc/redis/redis.conf redis:7-alpine redis-server /usr/local/etc/redis/redis.conf - Memcached:用
memcached:alpine镜像,docker run -d --name memcached-cache -p 11211:11211 memcached:alpine -m 64(限制内存 64MB) - passenger-docker 用户可构建带缓存的定制镜像:加
--build-arg redis=1或--build-arg memcached=1参数,自动集成服务
还要缓软件包下载?配 Apt-Cacher-NG
专用于 Debian/Ubuntu 系统内 apt-get 的缓存代理,适合 CI 构建阶段提速:
- 启动服务:
docker run -d --name apt-cacher-ng -p 3142:3142 sameersbn/apt-cacher-ng - 在 Dockerfile 中使用:
RUN echo "Acquire::http::Proxy \"http://host.docker.internal:3142\";" > /etc/apt/apt.conf.d/01proxy(注意 host.docker.internal 在旧版 Docker Desktop 需手动配置)
别漏掉运维要点
缓存不是一劳永逸,得持续维护:
- 定期查命中率(Harbor UI 或 registry metrics API)、清理过期镜像或冷门包
- 监控磁盘占用,避免 cache_size 超限导致写入失败
- 自签名证书需同步到客户端
/etc/docker/certs.d/下对应路径 - 多 Registry 上游(如 docker.io + ghcr.io)建议启用故障自动切换


















