私有Docker Registry推送镜像后docker images不显示但API可查询问题
问题原因
- 私有Docker Registry本身是独立运行的容器化服务,用户推送的镜像会存储在Registry服务专属的存储区域(通常是绑定的宿主机指定目录、对象存储服务或Registry容器内部存储层),和Registry宿主机Docker daemon管理的本地镜像存储空间是完全隔离的两套体系。
- 宿主机执行
docker images返回的一周前旧镜像,只是早期搭建人员在宿主机本地执行过build、pull操作留存的镜像副本,不是Registry存储内的镜像数据。新推送的镜像仅写入了Registry的专属存储,未同步到宿主机本地镜像库,因此无法通过docker images查询到。
操作方案
方案1:将镜像拉取到宿主机本地(满足docker images可见需求)
SSH登录Registry宿主机后直接执行拉取命令即可:
docker pull 192.x.x.x:5000/myappname:v1.0
拉取完成后再执行docker images就能看到对应镜像。
方案2:直接查询Registry存储内的镜像(无需拉取到本地)
如果只是需要确认Registry存储的镜像列表,不需要在宿主机本地留存副本,可直接执行以下命令查询,无需通过浏览器访问API:
# 先查询Registry对应的容器ID/名称 docker ps | grep registry # 进入Registry容器查看存储的仓库列表 docker exec <替换为Registry容器ID/名称> ls /var/lib/registry/docker/registry/v2/repositories/
注意:无特殊需求不要直接修改Registry存储目录内的文件,避免镜像数据损坏。
内容的提问来源于stack exchange,提问作者uddi baba
相关产品推荐
相关产品推荐

