升级私有registry服务版本的核心是替换容器镜像并保留配置、存储和证书数据,需确认当前版本、拉取新镜像、停旧容器(不删卷)、用原挂载和参数启新容器,最后验证api与推送功能。

升级私有 Registry 服务版本,核心是替换运行中的 registry 容器为新版本镜像,并确保配置、存储和证书等关键数据不丢失。整个过程不需重建仓库,重点在平滑切换。
确认当前版本并拉取新版镜像
先查看正在运行的 registry 容器所用镜像:
docker inspect registry | grep "Image"再拉取目标版本(如 registry:2.8.3 或最新稳定版):
docker pull registry:2.8.3建议优先使用带明确版本号的镜像(如 registry:2.8.3),避免用 :latest 带来的不可控变更。
停止旧容器,保留存储卷和配置
Registry 的数据默认存在 /var/lib/registry,只要启动时用了 -v 挂载宿主机目录,数据就与容器解耦。升级前务必确认挂载关系:
然后安全停用旧服务:
docker stop registry && docker rm registry注意:不要加 -v 参数删卷,否则镜像数据会丢失。
用新版镜像重新启动容器
沿用原有挂载路径、端口映射和环境变量。例如原命令是:
docker run -d -p 5000:5000 --name registry -v /data/registry:/var/lib/registry registry:2.7.1升级时只需改镜像名:
docker run -d -p 5000:5000 --name registry -v /data/registry:/var/lib/registry registry:2.8.3若启用了 HTTPS,还需同步挂载证书目录和设置 REGISTRY_HTTP_TLS_* 环境变量;若配置了自定义 config.yml,也需通过 -v 挂载并指定 -e REGISTRY_CONFIGURATION=/path/to/config.yml。
验证升级是否生效
检查容器日志是否有启动错误:
docker logs registry调用 Registry v2 API 查看服务状态和镜像列表:
curl -X GET http://localhost:5000/v2/_catalog尝试推送一个测试镜像(如已打标过的 localhost:5000/test:latest),确认 push/pull 功能正常。版本号可通过响应头中的 Docker-Distribution-Api-Version 字段间接判断,或直接查容器镜像 ID 是否匹配新拉取的版本。











