Nexus3 Docker 私服镜像仓库中的tag列表获取与digest获取问题
在使用由OSS Nexus3搭建的Docker私服镜像仓库时,遇到了一些用curl命令获取tag list和镜像digest的问题,分享一些自己的解决办法。
先上结论
curl 命令获取 tag list
curl "http://your_nexusHost_ip:your_repo_port/nexus/service/rest/repository/browse/your_repository_name/v2/your_image_name/tags/" 2>&1 | grep your_nexusHost_ip | awk -F\" '{print $2}'
这是我试出来的http路径格式,通过此路径会拉取到相应镜像的:一系列被tr标签和a标签包住的含tag的字段,再由grep和awk筛选后,得到一行行的含有tag信息的字段,tag信息位于每行的最后。要精确地获取tag列表,则还需后续处理。
curl 命令获取 digest
# 根据某个content digest获取其相应的digest
curl -s -H "Accept: application/vnd.docker.distribution.manifest.v2+json" http://your_nexusHost_ip:your_web_port/nexus/repository/your_repository_name/v2/your_image_name/manifest/your_content_digest | jq -r '.config.digest' | tr -d '\r\n'
# 根据某个image:tag获取对应的digest
curl -s -H "Accept: application/vnd.docker.distribution.manifest.v2+json" http://your_nexusHost_ip:your_web_port/nexus/repository/your_repository_name/v2/your_image_name/manifest/your_tag_name | jq -r '.config.digest' | tr -d '\r\n'
上述两个命令都会返回一个sha256的值。
content digest的作用可以匹配不同仓库的相同image:tag镜像的一致性,由于我在nexus的docker仓库中没找到直接通过image:tag获取content digest的方式,但发现了可以借助其他仓库已查询到具体image:tag的content digest,来反推nexus仓库中某个镜像的digest,最后通过此digest与在nexus仓库中由image:tag查询得到的digest做出一致性判断。
以上方法仅个人试验得到,如有不正请各位及时指正!有更好的方法也请多多指教!!