docker 中的程序的输出(比如 `print`) 会被保存到磁盘吗?
问题描述
服务器中的容器在运行了几天后,磁盘被占满了,经过查找大文件,发现/var/lib/docker
路径下container
文件夹中有个以log
结尾的文件非常大。删除后把程序启动起来,过了半小时在查看该目录:
问题出现的环境背景及自己尝试过哪些方法
当时临时办法是写了一个脚本定时删除该log文件。
代码中只有print输出,并没有保存log文件。
后来修改代码把打印输出去掉,就没有再出现log文件。我怀疑是docker自动收集了这些打印。
最后我还是不太确定是否是因为 docker会自动收集这些打印 而导致服务器磁盘占满。请各位前辈指点迷津。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你的print应该是存入到docker的日志中了。
经过查阅资料了解到:
docker中日志记录机制称为日志驱动程序;
docker daemon 有一个默认的日志驱动程序,默认为json-file;
更改默认的日志启动程序即可,具体操作如下:
sudo vim /etc/docker/daemon.json
{"log-driver": "none"}
(也可以添加{"log-opts": {"max-size": "10m" }}
来控制log文件的大小)sudo systemctl daemon-reload
、sudo systemctl restart docker
资料参考地址:
Docker 生产环境之日志 - JSON File 日志驱动程序
配置日志驱动程序