Docker笔记之registry清理


尝试了几种方式, 算是找到了一个比较方便的清理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 的数据

  1. dry-run

    REGISTRY_DATA_DIR=/var/lib/registry/docker/registry/v2 python delete_docker_registry_image.py --image image1 -u --dry-run
    
  2. 实际删除(需要先暂停registry)

    REGISTRY_DATA_DIR=/var/lib/registry/docker/registry/v2 python delete_docker_registry_image.py --image image1 -u
    
  3. 查看磁盘占用(恢复registry)

    发现磁盘占用的大头还是这些 untagged 的数据, 仅仅处理了几个分层数量最多的镜像,一下子多了几百G的空间

参考资料

作者: honmaple
链接: https://honmaple.me/articles/2021/08/Docker笔记之registry清理.html
版权: 知识共享署名-非商业性使用-相同方式共享4.0国际许可协议
wechat