前言
自建仓库中目前存在大量已过时不再适用的旧版本服务镜像,不得不做一次镜像大清理。
用脚本清理镜像
下载镜像清理的python脚本
curl https://raw.githubusercontent.com/burnettk/delete-docker-registry-image/master/delete_docker_registry_image.py | sudo tee /usr/local/bin/delete_docker_registry_image >/dev/null sudo chmod a+x /usr/local/bin/delete_docker_registry_image
|
【可选】安装python,如服务器已安装可跳过
设置环境变量
# 运行docker inspect registry,输出存在如下结构体 [root@VM-16-14-opencloudos ~]# docker inspect registry ... "Mounts": [ { "Type": "bind", "Source": "/data/docker-space/docker-registry-deploy/auth", "Destination": "/auth", "Mode": "", "RW": true, "Propagation": "rprivate" }, { "Type": "bind", "Source": "/data/docker-space/docker-registry-deploy/config", "Destination": "/etc/docker/registry", "Mode": "", "RW": true, "Propagation": "rprivate" }, { "Type": "bind", "Source": "/data/docker-space/docker-registry-deploy/data", "Destination": "/var/lib/registry", "Mode": "", "RW": true, "Propagation": "rprivate" } ], ...
|
- 从上面数据可看出容器中
/var/lib/registry
目录在宿主机实际位置是/data/docker-space/docker-registry-deploy/data
- 设置
REGISTRY_DATA_DIR
环境变量
# export REGISTRY_DATA_DIR=`/data/docker-space/docker-registry-deploy/data`/docker/registry/v2 export REGISTRY_DATA_DIR=/data/docker-space/docker-registry-deploy/data/docker/registry/v2
|
清理镜像
# image_name为镜像名 python3 delete_docker_registry_image -i ${image_name} -u
|
docker exec -t ${container_name} registry garbage-collect /etc/docker/registry/config.yml
|
暴力清理指定项目相关的全部景象
该方式清理的时候是按镜像分类清理的
# 进入容器 docker exec -it registry sh # 进入容器后的操作 # 查看镜像总占用空间 du -sch /var/lib/registry # 分析镜像层数较多的镜像,仅显示占用前10的镜像名称 registry garbage-collect --dry-run /etc/docker/registry/config.yml | awk -F : '{print $1}' | sort | uniq -c | sort -rn -k1 | head -10 | grep -v "redis\|jdk\|php\|mysql\|nginx\|apache\|zk\|elastic" # 从上方的输出,酌情考虑哪些镜像需要删除 cd /var/lib/registry/docker/registry/v2/repositories # 查看当前文件夹目录,可以看到一个个项目的总项目名(镜像名除仓库地址外的第一层级目录) ls # 酌情使用rm 删除想要删除的镜像文件夹 # 使用垃圾回收,清理二进制空间 registry garbage-collect /etc/docker/registry/config.yml # 再次查看占用空间,看清理是否有效果 du -sch /var/lib/registry
|
参考文章:
https://www.cnblogs.com/xiaojiluben/p/15497837.html