编辑
2024-03-13
Docker
0
请注意,本文编写于 523 天前,最后修改于 481 天前,其中某些信息可能已经过时。

目录

日志
1. 应急解决: 清空log日志
脚本处理
2. 运行时控制:
3. 全局配置:
鏡像
最簡單的方法
docker 常用排查命令

日志

用过docker部署的童鞋可能都遇到过,docker在运行一段时间,可能会出现磁盘空间被占满的情况, 经过排查后发现,,docker容器自身在运行时会不断产生一个以容器id-json命名的log文件,一般是在/var/lib/docker/containers/目录下,该日志文件会严重占用磁盘空间。

以下介绍几种解决方案:

1. 应急解决: 清空log日志

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

image.png

更进一步也可以配合定时任务来进行处理

2. 运行时控制:

# max-size 最大数值 # max-file 最大日志数 docker run -it --log-opt max-size=10m --log-opt max-file=3 redis

3. 全局配置:

创建或修改文件 /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 //自动清理空间
  • 该指令默认会清除所有如下资源:
    • 已停止的容器(container)
    • 未被任何容器所使用的卷(volume)
    • 未被任何容器所关联的网络(network)
    • 所有悬空镜像(image)。
  • 指令默认只会清除悬空镜像,未被使用的镜像不会被删除。
  • 添加 -a--all 参数后,可以一并清除所有未使用的镜像和悬空镜像。
  • 可以添加 -f--force 参数用以忽略相关告警确认信息。
  • 指令结尾处会显示总计清理释放的空间大小。

image.png

另外,使用命令 docker system df 可以查看docker所占的硬盘大小,如:

image.png

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*
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:澳门🇲🇴上班的IT人

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!