码迷,mamicode.com
首页 > Web开发 > 详细

json log文件 过大

时间:2019-11-15 20:25:32      阅读:110      评论:0      收藏:0      [点我收藏+]

标签:star   ror   pytho   文件大小   log   是你   启动   mod   创建   

/var/lib/docker/containers/[容器ID]/[容器ID]-json.log

一般来说 docker 会把容器内 stdout 和 stderror 的内容打印到 json.log 中,如果增长太快的话需要看一下是不是你的 image 里相关的配置有问题,太多的东西都打到 stdout 去了。如果只是想关闭打印日志的话可以在 docker run 的时候加上参数 --log-driver="none"。

修改 --log-driver=json-file
重启docker服务: service docker restart即可

 

cat /dev/null >json.log 清空这个文件的内容,释放磁盘空间; 需要重启容器,才能继续记录日志。

 

#添加max-size参数来限制文件大小
docker run -it --log-opt max-size=10m --log-opt max-file=3 alpine ash

 

Docker容器所有的标准输出标准错误都会被Docker Daemon接管

Docker容器本身理应尽量无状态,容器内应用持久化的日志则有状态,频繁迁移不宜容器日志管理

Docker容器的应用日志,如果自己发往集中的日志处理中心,则为上上策,易统一;问题是成本高,得有钱买机器,还需统一化的标准

 

目标:

通过标准输出,传递Docker容器内部的应用持久化日志文件。

方法:

简单重构应用Dockerfile的CMD指令。

问题假设:

原先应用Dockerfile的CMD指令为CMD [“python”, “app.py”],应用打印日志的路径为/var/log/app.log。

具体实现:

第一步:在原先Dockerfile所在目录下,创建一个run.sh文件,文件内容为:

#!/bin/bash

tail -F /var/log/app.log &

exec python app.py

第二步:修改Dockerfile,删除原先的CMD,替换为三个指令。

指令一:ADD run.sh /;

指令二:RUN chmod +x run.sh;

指令三:CMD [“./run.sh”]

原理剖析:

run.sh中启动了一个后台进程,使用tail命令强制将/var/log/app.log的内容传输至标准输出,

随后使用exec命令将python app.py作为容器的主进程运行。

技术图片

 

 

官网文档链接:

https://docs.docker.com/config/containers/logging/json-file/#usage

json log文件 过大

标签:star   ror   pytho   文件大小   log   是你   启动   mod   创建   

原文地址:https://www.cnblogs.com/kingdomer/p/9770841.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!