背景:分享今天遇到的一个私有仓库磁盘100%,但是docker images 查看镜像,已经清理到只剩10个左右的可见镜像了。但磁盘还是90%多,10个镜像总和大小不到3个G,怎么会把500G的磁盘沾满呢?经过网上一通查询资料,才知道构建的历史镜像覆盖后,并没有删除镜像层。
下面进入正题 在网上找到一个清理脚本,具体的网址找不到了,翻阅太多帖子了。
1、#先下载脚本到/usr/local/bin/目录下
curl https://raw.githubusercontent.com/hushuai86/docker-delete/master/docker-delete-2.0.sh | sudo tee /usr/local/bin/docker-delete >/dev/null
2、#赋予可执行权限
chmod a+x /usr/local/bin/docker-delete
3、#私有库镜像存储目录路径全局环境变量(该路径就是运行私有库容器时,用-v 命令将私有库容器内 /var/lib/registry目录挂载到本机的路径) #例: /opt/data/registry是我运行容器时私有库镜像存储目录挂载到本地的目录 echo "export DOCKER_REGI
STRY_DIR=/opt/data/registry" >>/etc/profile
4、#运行私有库容器ID全局环境变量设置(正在运行的私有库容器的 ID) #例: 89b9b3c9054ay是我的私有库库容器的id echo
"export DOCKER_REGISTRY_CONTAINER_ID=89b9b3c9054a" >>/etc/profile
5、#使配置生效
source /etc/profile
#然后就可以使用docker-delete命令了
#在执行清理命令前需要修改registry的配置文件,私有库默认是不支持删除镜像的
cat config.yml
version: 0.1
log:
fields:
service: registry
storage:
cache:
blobdescriptor: inmemory
filesystem:
rootdirectory: /var/lib/registry
delete: #添加
enabled: true #添加
http:
addr: :5000
headers:
X-Content-Type-Options: [nosniff]
health:
storagedriver:
enabled: true
interval: 10s
threshold: 3
####配置文件地址:容器内/etc/registry/config.yml 或者 /etc/docker/registry/config.yml###
命令参数:
/usr/local/bin/docker-delete --help
Usage:
docker-delete -sr [description: show all image repositories]
docker-delete -st <image repository> [description: show all tags of specified image repository]
docker-delete -dr <image repository> [description: delete specified image repository ]
docker-delete -dr -all [description: delete all image repositories ]
docker-delete -dt <image repository> <image tag> [description: description: delete specified tag of specified image repository ]
docker-delete -dt <image repository> [description: description: delete all tags of specified image repository
删除清理镜像步骤
1、#查看所有的镜像列表
[root@node8 ~]# docker-delete -sr
zddz-examine
zddz-notice
gddx-examine
zddz-school
gddx-notice
gddx-school
fastdfs-service
gdd-zuul
docker-delete -dr gdd-zuul
3、##根据tag删除对应的镜像,先查看该镜像的所有tag
docker-delete -st gdd-zuul
v2.0
v2.1
v2.2
4、# 再删除想删除的tag
docker-delete -dt gdd-zuul v2.0
5、#我们再查看镜像的所有tag ,v2.0 就没有
docker-delete -st gdd-zuul
v2.1
当然最后,清理完想清理的镜像后,磁盘占用空间肯定是大幅度减少啦!
好啦,今天的分享就到此为止吧,希望对您有用。
兴趣是最好的老师,爱好是永远的朋友。
我是半路出家的老王爱运维。