清理HiNas(海纳斯) Docker日志并限制日志大小

我在一个机顶盒的HiNas系统上跑Octoprint的docker版本,每隔一段时间盒子空间就被占完了,运行df -h之后,显示/dev/root Use 100%。

shell 复制代码
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       6.6G  6.6G     0 100% /
devtmpfs        466M     0  466M   0% /dev
tmpfs           466M     0  466M   0% /dev/shm
tmpfs            94M   12M   82M  13% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           466M     0  466M   0% /sys/fs/cgroup
tmpfs           466M     0  466M   0% /tmp
overlay         6.6G  6.6G     0 100% /var/lib/docker/overlay2/af39d08ee431ec651a5e65f7d9b0aaff9bf7b65b8c375b53c870436c1dd34e9c/merged
overlay         6.6G  6.6G     0 100% /var/lib/docker/overlay2/f0146795cc30d1d31d7d104c96327201a0ced5cb4d70e214ab654e629bf0f22c/merged
tmpfs            94M     0   94M   0% /run/user/0

问了deepseek,建议我执行如下命令:

shell 复制代码
sudo find /var/lib/docker/containers -name "*.log" -exec truncate -s 0 {} \;

然后空间就腾出来了3.1个G:

shell 复制代码
root@hi3798mv100:~# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root       6.6G  3.2G  3.1G  51% /
devtmpfs        466M     0  466M   0% /dev
tmpfs           466M     0  466M   0% /dev/shm
tmpfs            94M  3.2M   90M   4% /run
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs           466M     0  466M   0% /sys/fs/cgroup
tmpfs           466M     0  466M   0% /tmp
overlay         6.6G  3.2G  3.1G  51% /var/lib/docker/overlay2/af39d08ee431ec651a5e65f7d9b0aaff9bf7b65b8c375b53c870436c1dd34e9c/merged
overlay         6.6G  3.2G  3.1G  51% /var/lib/docker/overlay2/f0146795cc30d1d31d7d104c96327201a0ced5cb4d70e214ab654e629bf0f22c/merged
tmpfs            94M     0   94M   0% /run/user/0

然后继续问如何限制日志大小,建议如下:
/etc/docker/daemon.json添加如下内容:

shell 复制代码
"log-driver": "json-file",
  "log-opts": {
    "max-size": "50m",
    "max-file": "2"
  }

验证与维护

  1. ‌检查配置生效状态 ‌

    复制代码
    bashCopy Code
    docker info | grep -i log  # 查看全局配置
    docker inspect <容器ID> | grep LogConfig  # 查看容器级配置
  2. ‌定期清理残留日志 ‌
    添加定时任务(crontab -e):

    复制代码
    bashCopy Code
    # 每周日凌晨清理历史日志
    0 0 * * 0 find /var/lib/docker/containers -name "*.log.*" -delete

    此操作清除已被Docker自动轮转后的过期日志文件

相关推荐
Lvan的前端笔记3 小时前
docker:每个前端项目一个 Nginx 容器还是只有一个Nginx容器
前端·nginx·docker
代码什么用5 小时前
Spring基础使用
java·后端·spring
Su米苏5 小时前
Spring AI 中MCP 与普通 @Tool的区别
java·人工智能·spring
码云数智-园园5 小时前
unique_ptr 还是 shared_ptr?C++ 智能指针选型与内存泄漏实战分析
java·开发语言
老板一杯拿铁5 小时前
Java 异常体系详解:从字节码原理到最佳实践
java
蜗牛互联网5 小时前
Java 17 HttpClient调用文件转写API的超时与失败回退
java·人工智能·后端
禾小西6 小时前
07丨Redis 哨兵机制:主库故障后,如何恢复服务?
java·开发语言·redis
我不是阵雨6 小时前
JDK 21虚拟线程Pinning陷阱:一文拔钉解困
java·开发语言
小卡车5556 小时前
java反射、自定义注解的应用(自定义分页)
java
BLUcoding7 小时前
接口服务公网超时排查记录:SecureRandom 阻塞问题分析与解决
java·linux·springboot·aes·securerandom