通过docker registry的文件夹获取到所有的镜像

工作需要获取docker registry里所有的镜像和tag,但是系统在磁盘被占满的情况下出现无法工作的情况,无法通过dockers registry的API去获取。
所以尝试通过,registry的文件夹目录结构中取出想要的结果,最后证明可行。

1
2
3
4
5
6
export docker_registry_dir=/opt/bcmt/storage/docker-registry/ # docker registry 的安装目录。

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)}'

# 多行换成一行,用逗号分隔
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就可以搞定,不错!

Notice: 正常情况下,这里会有一个基于utteranc.es的留言系统,如果看不到,可能需要科学上网方式。