限制docker日志

我有一个运行用户代码的应用程序。 我想确保Docker不会收集太多的日志,我将丢弃它。 为此,我试图使用max-sizemax-file日志logging选项来获取用户输出的最后几个千字节,并丢弃其余的数据,但这似乎不起作用。

如果我做:

 $ docker run --log-opt max-size=2 --log-opt max-file=1 python:2 python -c "for i in range(10): print i" 0 1 2 3 4 5 6 7 8 9 

然后它仍然在屏幕上打印完整的输出。 如果我在主机上手动检查日志,我可以看到具有完整输出的文件在那里。

在这种情况下,我不应该只得到9\n ? 我在这里做错了什么?

Dockers JSON文件日志选项不会影响stdout和stderrstream到您的docker客户端。 在前台运行时您将看到完整的输出。

在运行docker logs ,信息将从文件中拉回。

最大尺寸需要一个单位。 千字节,兆字节或千兆字节。

 --log-opt max-size=[0-9+][k|m|g] 

这会设置一个JSON日志文件的大小,以便有相对于有助于大小的行长的额外的元数据。

 {"log":"1\n","stream":"stdout","time":"2016-05-30T07:39:31.265191929Z"} 

您最多可以在1k空间内安装14个日志条目。 docker工人是否logging旋转是否准确是另外一回事。

在任何情况下,你可能都在浪费时间处理小于4k的文件大小。