相关消息称,运维过Docker容器的朋友,大概率都经历过这样的惊魂时刻:突然收到磁盘告警,df -h一看,根目录使用率100%。顺着路径查下去,发现/var/lib/docker/containers/下躺着好几个几十GB的日志文件。 科技新闻。
配置轮转之后,只对新产生的日志生效。已经存在的超大日志文件不会自动消失,需要手动清理。
修改Docker守护进程的配置文件/etc/docker/daemon.json(如果文件不存在,新建即可):
日志背景与起因
Docker Compose方式(在docker-compose.yml中添加):
注意:千万不要用rm直接删除日志文件!因为Docker进程还在占用文件句柄,直接删除会导致写入失败,甚至容器异常。
修改后执行docker-compose up -d重建容器即可。
日志事件经过
如果你确定要清理当前所有容器的日志,可以执行:
今天这篇文章,就带你彻底解决这个问题——包含全局配置、单容器配置,以及旧日志的清理方案。
Docker Run方式:
日志各方回应
如果你不想影响全局,或者只想针对某个特定容器配置更小的日志限制,可以在容器启动时单独指定。
如果你刚好要重新配置容器(比如修改了docker-compose.yml),重建时旧容器会被移除,其关联的日志文件也会一并删除。
没错,Docker默认的json-file日志驱动不会自动轮转。容器里输出的每一条日志都会被原封不动地记录下来,日积月累,直到撑爆你的硬盘。
日志影响分析
参数说明:
配置完成后,执行以下命令使配置生效,该命令会重启所有容器,建议在业务低峰期或维护窗口操作。
如果容器不能重启,可以使用truncate命令将日志文件“截断”为0大小,而不会破坏Docker对该文件的写入句柄。
日志轮转是容器运维的基础但至关紧要的环节。别等到服务器告警才想起来配置,现在就去检查你的Docker环境吧!