清理 docker 占用的磁盘空间

一、docker占用的空间可以通过下面的命令查看:
docker system df
TYPE 列出了docker使用磁盘的4中类型:
Images:所有镜像占用的空间,包括拉取下来的镜像,和本地构建的
Containers:运行的容器占用的空间,表示每个容器的读写层的空间
Local Volumes:容器挂载本地数据卷的空间
Build Cache:镜像构建过程中产生的缓存空间
RECLAIMABLE:可回收大小

二、容器的磁盘占用
每次创建一个容器时,都会有一些文件和目录被创建,例如:
/var/lib/docker/containers/ID目录,如果容器使用了默认的日志模式,他的所有日志都会以JSON形式保存到此目录下。
/var/lib/docker/overlay2 目录下含有容器的读写层,如果容器使用自己的文件系统保存了数据,那么就会写到此目录下。

命令删除停止的容器
docker container prune
删除所有的容器(包括停止、正在运行的)
docker rm -f $(docker ps -aq)
docker container rm -f $(docker container ls -aq)

三、镜像的磁盘占用:
有些镜像是隐形的:
子镜像,就是被其他镜像引用的中间镜像,不能被删除
悬挂状态的镜像,就是不会再被使用的镜像,可以被删除
下面的命令列出所有悬挂状态的镜像:
docker image ls -f dangling=true

删除这类镜像:
docker image rm $(docker image ls -f dangling=true -q)
或者 docker image prune

删除所有镜像:
docker image rm $(docker image ls -q)
正在被容器使用的镜像是不能被删除的

四、数据卷的磁盘占用
数据卷是容器自身文件之外的数据存储
列入容器中的应用有上传图片功能,上传之后肯定不能保存在容器内部,因为容器内部的数据会随着容器的死掉而被删除,所以这些图片要保存在容器之外,也就是数据卷

删除不再使用的数据卷
docker volume rm $(docker volume ls -q)
或者 docker volume prune

五、Build Cache 的磁盘占用
Docker18.09引入了BuildKit,提升了构建过程的性能、安全、存储管理等能力
删除build cache可以使用命令:
docker builder prune

一键清理没用的空间:
docker sysytem prune

docker日志清理脚本
创建一个clean_docker_log.sh

#!/bin/sh
echo “====== start clean docker containers logs ======”
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
do
echo “clean logs : $log”
cat /dev/null > $log
done
echo “====== end clean docker containers logs ======”

chmod +x clean_docker_log.sh
./clean_docker_log.sh

设置Docker容器日志大小

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!