工作需要获取 docker registry 里所有的镜像和 tag,但是系统在磁盘被占满的情况下出现无法工作的情况,无法通过 docker registry 的 API 去获取。
所以尝试通过 registry 的文件夹目录结构中提取想要的结果,最后证明可行。
列出所有镜像:tag
1 | export docker_registry_dir=/opt/bcmt/storage/docker-registry/ # docker registry 的安装目录。 |
合并为逗号分隔的一行
1 | cd ${docker_registry_dir}docker/registry/v2/repositories/; ls -R | grep tags/ | grep -v "current"| grep -v "index" | sort | awk '{a=index($0,"./");b=index($0,"/_manifests/tags/");c=index($0,":"); print substr($0,a+2,b-a-2)":"substr($0,b+17,c-b-17)}' | tr '\n' ',' |
之前都是用 Notepad++ 手动替换处理,这次发现结合这几个命令 awk、print、substr、tr 就可以搞定,不错!