Table of Contents
尝试了几种方式, 算是找到了一个比较方便的清理docker registry的方式
前言
两年前分给了 docker registry 1T的磁盘,虽然有预感磁盘空间会被用完, 没想过能够坚持这么久。 而且期间一直想把 registry 迁移到 harbor,也能对不同账户的权限进行分配和限制,但几百G的磁盘占用也不好迁移,所以一直被耽搁(迁移方式都准备好了 https://blog.k8s.li/docker-registry-to-harbor.html)
清理
列出所有镜像
registry garbage-collect --dry-run /etc/docker/registry/config.yml >> res.txt
找出分层(push次数)最多的几个镜像
cat res.txt | awk -F : '{print $1}' | sort | uniq -c | sort -rn -k1 | head -10
  25871 image1
  25649 image2
  16815 image3
  ...
删除某个镜像的untagged的数据
   注意 -u 参数, 仅删除 untagger 的数据
- 
dry-run REGISTRY_DATA_DIR=/var/lib/registry/docker/registry/v2 python delete_docker_registry_image.py --image image1 -u --dry-run 
- 
实际删除(需要先暂停registry) REGISTRY_DATA_DIR=/var/lib/registry/docker/registry/v2 python delete_docker_registry_image.py --image image1 -u 
- 
查看磁盘占用(恢复registry) 发现磁盘占用的大头还是这些 untagged 的数据, 仅仅处理了几个分层数量最多的镜像,一下子多了几百G的空间 
 知识共享署名-非商业性使用-相同方式共享4.0国际许可协议
        知识共享署名-非商业性使用-相同方式共享4.0国际许可协议
       
      