内容纲要
概要说明
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即可删除。看到下图提示信息表示删除成功。
在registry页面(tos服务的registry角色的连接点进去)确认image是否删除。