如何删除docker和registry上的image

  其他常见问题
内容纲要

概要说明

registry中存储集群的所有images,每个节点的docker在启动容器时候会pull到本地机器,二者都会占用磁盘空间。

详细说明


集群上传产品包到registry时候会占用/var/lib/registry_data的空间,这个目录一般不会单独挂载,上传大量产品包时候会占用大量根目录的空间。
docker启动容器会从registry上pull images到本地机器,会占用/var/lib/docker磁盘空间。

1、删除docker上的image

docker rmi image名字

2、删除registry上的image

#!/bin/bash
registry_ip=${registry所在机器的ip}:5000
registry_id=$(docker ps | grep registry:${安装的tos的版本} | awk ‘{print $1}’)
images=(
${image的目录}
)
set -ex
for image in ${images[*]}
do
image_pro=$(echo $image | awk -F: ‘{print $1}’)
image_tag=$(echo $image | awk -F: ‘{print $2}’)
sha_data=$(curl -k -v --silent -H “Accept: application/vnd.docker.distribution.manifest.v2+json” -X GET https://${registry_ip}/v2/${image_pro}/manifests/${image_tag} 2>&1 | grep Docker-Content-Digest | awk ‘{print ($3)}’)
sha_data=$(echo $sha_data | tr -d ‘\r’)
curl -k -v --silent -X DELETE https://${registry_ip}/v2/${image_pro}/manifests/${sha_data}
done
docker exec -it ${registry_id} bin/registry garbage-collect /etc/docker/registry/config.ym

复制上面的的内容到delete.sh文件中,注意修改
(1). ${registry所在机器的ip}为registry所在机器的ip
(2). ${安装的tos的版本}为当前安装的tos的版本,例如transwarp-5.0.0-final
(3). ${image的目录}为要删除的image的目录到tag的全名,例如transwarp/inceptor:transwarp-5.0.0-final
如果images是tw-node1248:5000/transwarp/inceptor:transwarp-5.0.0-final,那么(1)${registry所在机器的ip}=tw-node1248;(2)${image的目录}为transwarp/inceptor:transwarp-5.0.0-final。
然后执行bash +x delete.sh即可删除。看到下图提示信息表示删除成功。

file

在registry页面(tos服务的registry角色的连接点进去)确认image是否删除。

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。