一、linux系统内清理
在全容器化环境下,写脚本,放入crontab执行,清理nginx日志,清理docker映射出来的日志,按需保留旧日志,按需清空当天日志文件内容。
du -sh *
df -h
二、镜像、容器、容器内、映射路径清理
2.1.删除过时,无引用的镜像,多个用空格隔开
docker ps -a
docker rmi xxx
2.2.删除过时,不启用的容器
docker images
docker rm -f xxx
2.3.容器内清理日志(truncate -s 0也可以)
docker exec xxx /bin/bash -c 'cp /dev/null /xxx.log'
docker exec xxx /bin/bash -c 'rm /xxx.log.1'
2.4.docker配置映射路径清理
写脚本,放入crontab执行清理
PS:日常习惯于在控制台直接使用docker命令对容器或镜像进行管理,属于不完整不安全操作,当然也比较方便快捷,但终究不是一个好的运维习惯。
三、docker服务级别清理(高危操作)
3.1.docker system df 命令,类似于Linux上的df命令,用于查看Docker的磁盘使用情况
该命令列出了 docker 使用磁盘的 4 种类型:
Images: 所有镜像占用的空间,包括拉取的镜像、本地构建的镜像
Containers: 运行中的容器所占用的空间(没运行就不占空间),其实就是每个容器读写层的空间
Local Volumes: 本地数据卷的空间
Build Cache: 镜像构建过程中,产生的缓存数据
3.2. docker system df -v 命令可以进一步查看单个image镜像、container容器空间占用细节,以确定是哪个镜像、容器或本地卷占用过高空间。
3.3.docker system prune 命令用于删除关闭的容器、无用的数据卷,以及无tag的镜像镜像,暂时关闭的容器(慎用)。
3.4.docker system prune -a 命令更加彻底,可以将没有容器使用Docker镜像都删掉。并且会把你暂时关闭的容器,以及暂时没有用到的Docker镜像都删掉了(慎用)。
3.5.另一种治标也高危的办法,在docker文件夹下,
du -h --max-depth=1
找到大文件,一般都存在于overlay2和containers中,搜索到带长id名的路径下的文件,如id为7bb28b90530287466c279af8dfe5ff5c1ca5bf19d0d3c4721252ed9bd9a19c89下的log文件,再根据前12位id对容器按需清理。
3.6.重启docker
没毛病
3.7.一开始就配置好限制容器的日志大小
/docker/containers目录下,如果使用了默认的日志模式,该容器的日志会以json形式保存在此目录下,containers包含了容器自身的容量、产生的数据容量、产生的日志容量。
/docker/overlay2 目录下,包含容器的读写层,默认情况下会把数据保存在此。
四、工具软件运维
rancher:大农场经营者,基于k8s的企业级容器管家,听到k8s就知道那是一个重,貌似k3s也行。配置复杂度尚可,前提得形成流水线闭环。如drone ci、代码仓库、镜像云平台,搭建好之后就可以自动化管理。按需配置之后会生成大量备用镜像和容器,比较难受。
portainer:Docker图形化工具,功能齐全,轻量级,好用。
PS:CSDN,那么多年了,你家的文章编辑器一直都是真的难用到狗都不想用。