Docker无法使用pull-through cache拉取缓存的问题求助
Registry Mirrors:
https://localhost:5000/
...
--- ## 排查与解决方案 ### 1. 检查Registry缓存配置(核心) 拉取缓存功能需要在`registry-config.yml`中明确配置`proxy`段,否则Registry仅作为普通私有仓库,不会转发拉取请求到Docker Hub。正确配置示例: ```yaml version: 0.1 log: fields: service: registry storage: cache: blobdescriptor: inmemory filesystem: rootdirectory: /var/lib/registry http: addr: :5000 proxy: remoteurl: https://registry-1.docker.io # 可选:拉取Docker Hub私有镜像时添加用户名和访问令牌 # username: your-dockerhub-username # password: your-dockerhub-access-token
2. 修复HTTP/HTTPS不兼容问题
你配置的镜像源为https://localhost:5000/,但默认Registry容器仅提供HTTP服务,Docker客户端会拒绝不安全的HTTPS连接,转而直接访问Docker Hub。解决方法二选一:
- 本地测试推荐:改用HTTP并配置不安全仓库
修改Docker daemon配置文件(通常为/etc/docker/daemon.json):
重启Docker服务:{ "registry-mirrors": ["http://localhost:5000"], "insecure-registries": ["localhost:5000"] }sudo systemctl restart docker - 生产环境:配置HTTPS证书
生成自签名证书或使用合法证书,修改Registry配置启用HTTPS(需同步更新Docker镜像源为https://localhost:5000)。
3. 验证缓存生效
删除本地已有的测试镜像,重新拉取并查看Registry日志:
# 删除本地镜像 docker rmi alpine:latest # 拉取镜像 docker pull alpine:latest # 查看Registry日志 docker-compose logs -f registry
若日志中出现proxying request相关内容,说明缓存已正常工作。
4. 其他排查点
- 确认Docker daemon重启后,
docker info显示的Registry Mirrors和Insecure Registries配置正确 - 检查Registry容器状态:
docker-compose ps,确保容器正常运行 - 排查用户级配置文件
~/.docker/config.json,确认没有覆盖全局镜像源设置
内容的提问来源于stack exchange,提问作者Chekote
相关产品推荐
相关产品推荐

