之前基于docker部署了一套harbor服务,存储配置一般,因此在使用harbor的时候,经常会出现空间满了,需要删除镜像,harbor管理页面上提供了删除的功能,有时候操作起来也不是很方便(比如批量删除多个仓库的精镜像),我在这里实现了通过脚本删除的工具。
镜像删除原理
在镜像删除之前,说明一下删除镜像的基本原理,如果需要批量删除某个镜像仓库,基本逻辑如下:
- 获取所有镜像仓库列表;
- 获取镜像仓库;
- 获取仓库标签列表;
- 根据标签获取镜像的digest;
- 根据digest删除镜像;
- 垃圾清理。
对于其他情况,只需要组合以上6个步骤中的某几个即可
先来实现每个步骤的脚本
- 环境准备:本实验环境在centos7操作系统及以上版本(假设docker harbor已安装);
- 需要安装jq(json数据处理工具),curl,命令工具;
获取运行环境的关键信息
CID=docker ps | grep harbor-registry | awk '{print $1}'
HUB=localhost:5000
IMAGES=’’
- 查询docker 镜像
function find_images(){
IMAGES=`curl -s $HUB/v2