poi*_*rez 75
Docker 1.8已经发布,带有日志轮换选项.添加:
--log-opt max-size=50m
Run Code Online (Sandbox Code Playgroud)
当容器启动时就可以了.您可以在以下网址了解更多信息:https: //docs.docker.com/engine/admin/logging/overview/
jak*_*aks 32
注意:这仅适用于docker-compose版本2
例:
version: '2'
services:
db:
container_name: db
image: mysql:5.7
ports:
- 3306:3306
logging:
options:
max-size: 50m
Run Code Online (Sandbox Code Playgroud)
Tar*_*han 18
version: "3.9"
services:
some-service:
image: some-service
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
Run Code Online (Sandbox Code Playgroud)
上面显示的示例将存储日志文件,直到它们达到最大大小 200kB,然后轮换它们。存储的单个日志文件的数量由 max-file 值指定。当日志增长超过最大限制时,旧的日志文件将被删除以允许存储新日志。
可用的日志记录选项取决于您使用的日志记录驱动程序
controlling log files and sizes
使用特定于json-file driver
. 这些特定选项在其他日志记录驱动程序上不可用。有关受支持的日志记录驱动程序及其选项的完整列表,请参阅日志记录驱动程序文档。注意:只有json-file
和journald
驱动程序才能直接从 docker-compose up 和 docker-compose 日志中获取日志。使用任何其他驱动程序不会打印任何日志。
来源:https ://docs.docker.com/compose/compose-file/compose-file-v3/
BMi*_*tch 15
[这个答案涵盖了 docker 的当前版本,适用于那些在被问到很久之后才遇到这个问题的人。]
要为所有新创建的容器设置默认日志限制,您可以在 /etc/docker/daemon.json 中添加以下内容:
{
"log-driver": "json-file",
"log-opts": {"max-size": "10m", "max-file": "3"}
}
Run Code Online (Sandbox Code Playgroud)
systemctl reload docker
如果您使用的是 systemd(否则使用适当的重新启动命令进行安装),则重新加载 docker with 。
您还可以使用类似的文件切换到本地日志驱动程序:
{
"log-driver": "local",
"log-opts": {"max-size": "10m", "max-file": "3"}
}
Run Code Online (Sandbox Code Playgroud)
本地日志驱动程序以内部格式(我相信 protobufs)存储日志内容,因此您将在相同大小的日志文件中获得更多的日志内容(或为相同的日志占用更少的文件空间)。本地驱动程序的缺点是日志转发器等外部工具,可能无法解析原始日志。要注意的docker logs
只有作品当日志驱动程序设置为json-file
,local
或journald
。
这max-size
是对 docker 日志文件的限制,因此它包括 json 或本地日志格式化开销。这max-file
是 docker 将维护的日志文件的数量。在一个文件上达到大小限制后,日志将被轮换,当您超过 时,最旧的日志将被删除max-file
。
有关更多详细信息,docker 有关于所有驱动程序的文档:https : //docs.docker.com/config/containers/logging/configure/
我也有一个介绍这个主题的演讲。使用P
查看演示说明:https://sudo-bmitch.github.io/presentations/dc2019/tips-and-tricks-of-the-captains.html#logs
警告:这篇文章涉及码头版本<1.8(没有--log-opt
选项)
为什么不使用logrotate(也支持压缩)?
/var/lib/docker/containers/*/*-json.log {
hourly
rotate 48
compress
dateext
copytruncate
}
Run Code Online (Sandbox Code Playgroud)
直接在CoreOs节点上配置它或部署一个容器(例如https://github.com/tutumcloud/logrotate),它安装/ var/lib/docker来旋转日志.
在运行容器时传递日志选项。一个例子如下
sudo docker run -ti --name visruth-cv-container --log-opt max-size=5m --log-opt max-file=10 ubuntu /bin/bash
Run Code Online (Sandbox Code Playgroud)
其中--log-opt max-size=5m
将最大日志文件大小--log-opt max-file=10
指定为 5MB,并指定要轮换的最大文件数。
归档时间: |
|
查看次数: |
45185 次 |
最近记录: |