用过
docker
部署的童鞋可能都遇到过,docker
在运行一段时间,可能会出现磁盘空间被占满的情况, 经过排查后发现,,docker容器自身在运行时会不断产生一个以容器id-json命名的log文件,一般是在/var/lib/docker/containers/
目录下,该日志文件会严重占用磁盘空间。
以下介绍几种解决方案:
cd /var/lib/docker/containers/容器id echo '' > 容器id-json.log
創建脚本:
touch clean_docker_log.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" echo '' > $log done echo "======== end clean docker containers logs ========"
授權
chmod 755 clean_docker_log.sh
執行
./clean_docker_log.sh
更进一步也可以配合定时任务来进行处理
# max-size 最大数值 # max-file 最大日志数 docker run -it --log-opt max-size=10m --log-opt max-file=3 redis
创建或修改文件 /etc/docker/daemon.json
,并增加以下配置
{ "log-driver":"json-file", "log-opts":{ "max-size" :"50m","max-file":"1" } }
然后重启dokcer
sudo systemctl daemon-reload sudo systemctl restart docker
特别注意
已存在的容器不会生效,需要重建该容器才可以使配置生效
docker system prune -a //自动清理空间
-a
或 --all
参数后,可以一并清除所有未使用的镜像和悬空镜像。-f
或 --force
参数用以忽略相关告警确认信息。另外,使用命令 docker system df
可以查看docker所占的硬盘大小,如:
1.删除不再使用的数据卷: $ docker volume rm $(docker volume ls -q) 或者 $ docker volume prune 2.删除 build cache $ docker builder prune 3.docker 系统一键清理没用的空间 $ docker system prune 4.键删除所有已经停止的容器 $ docker container prune 5.查看docker占用 $ docker system df
警告
如果空間佔用還是比較高,看下 /data
文件夾,看下01開頭的文件,沒用就刪掉
cd /data rm -rf 01*
本文作者:澳门🇲🇴上班的IT人
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!