如何让私有Docker Registry自动拉取Docker Hub公共镜像并缓存?
原生Docker Registry代理缓存功能实现说明
原生Docker Registry完全支持你需要的「本地无镜像时自动从上游拉取、自动缓存到本地」的需求,这个功能官方称为Pull Through Cache(拉通缓存),无需依赖第三方组件即可配置实现。
具体配置步骤
- 你可以直接通过环境变量快速启动带代理缓存功能的Registry,无需手动修改配置文件,启动命令示例:
如果需要拉取Docker Hub下你的账号有权限访问的私有镜像,可以额外添加认证参数:docker run -d -p 5000:5000 --restart=always --name registry \ -e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io \ registry:2docker run -d -p 5000:5000 --restart=always --name registry \ -e REGISTRY_PROXY_REMOTEURL=https://registry-1.docker.io \ -e REGISTRY_PROXY_USERNAME=<你的Docker Hub用户名> \ -e REGISTRY_PROXY_PASSWORD=<你的Docker Hub密码> \ registry:2 - 配置客户端Docker daemon,修改
/etc/docker/daemon.json文件,添加你的私有Registry地址作为镜像加速源:
修改完成后执行{ "registry-mirrors": ["http://<你的私有Registry服务器IP>:5000"] }systemctl daemon-reload && systemctl restart docker使配置生效即可。
相关注意事项
- 配置了代理缓存的Registry仅支持拉取操作,不支持直接向该Registry推送本地镜像,如果需要同时存储私有镜像和提供上游缓存能力,需要部署两套Registry,客户端通过镜像前缀区分访问目标。
- 缓存的镜像默认过期时间为10分钟,你可以通过添加环境变量
REGISTRY_STORAGE_CACHE_TTL自定义缓存保留时长。 - 仅能缓存上游公开镜像、或是你配置的Docker Hub账号有权限访问的私有镜像,无权限的镜像无法拉取缓存。
内容的提问来源于stack exchange,提问作者Koray Kutanoğlu
相关产品推荐
相关产品推荐

