我正在VM上运行容器。我的容器默认将日志写入/var/lib/docker/containers/CONTAINER_ID/CONTAINER_ID-json.log文件,直到磁盘已满。
目前,我必须手动删除此文件以避免磁盘已满。我在Docker 1.8中看到,rotate the logs会有一个参数。 你推荐什么作为当前的解决方法?
答案 0 :(得分:73)
Docker 1.8已经发布,带有日志轮换选项。添加:
--log-opt max-size=50m
当容器启动时就可以了。您可以在以下网站了解更多 https://docs.docker.com/engine/admin/logging/overview/
答案 1 :(得分:28)
注意:这仅适用于docker-compose版本2
示例:
version: '2'
services:
db:
container_name: db
image: mysql:5.7
ports:
- 3306:3306
logging:
options:
max-size: 50m
答案 2 :(得分:7)
警告:此帖子与docker版本有关< 1.8(没有--log-opt
选项)
为什么不使用logrotate(也支持压缩)?
/var/lib/docker/containers/*/*-json.log {
hourly
rotate 48
compress
dateext
copytruncate
}
直接在CoreOs节点上配置它,或者部署一个容器(例如https://github.com/tutumcloud/logrotate),它安装/ var / lib / docker来旋转日志。
答案 3 :(得分:2)
在运行容器时传递日志选项。一个例子如下
sudo docker run -ti --name visruth-cv-container --log-opt max-size=5m --log-opt max-file=10 ubuntu /bin/bash
其中--log-opt max-size=5m
指定最大日志文件大小为5MB,--log-opt max-file=10
指定最大旋转文件数。
答案 4 :(得分:0)
docker-compose版本1的示例:
mongo:
image: mongo:3.6.16
restart: unless-stopped
log_opt:
max-size: 1m
max-file: "10"
答案 5 :(得分:0)
[此答案涵盖了被问了很久之后遇到此问题的人的最新docker版本。]
要为所有新创建的容器设置默认日志限制,可以在/etc/docker/daemon.json中添加以下内容:
fseek
如果您使用的是systemd,则用{
"log-driver": "json-file",
"log-opts": {"max-size": "10m", "max-file": "3"}
}
重新加载docker(否则,使用适当的重启命令进行安装)。
您也可以使用类似的文件切换到本地日志记录驱动程序:
systemctl reload docker
本地日志记录驱动程序以内部格式(我相信protobufs)存储日志内容,因此您将在相同大小的日志文件中获得更多的日志内容(或为相同的日志占用更少的文件空间)。本地驱动程序的缺点是外部工具,例如日志转发器,可能无法解析原始日志。请注意,{
"log-driver": "local",
"log-opts": {"max-size": "10m", "max-file": "3"}
}
仅在日志驱动程序设置为docker logs
,json-file
或local
时有效。
journald
是对docker日志文件的限制,因此它包括json或本地日志格式化开销。 max-size
是docker将维护的日志文件数。在一个文件上达到大小限制后,将轮换日志,并在超过max-file
时删除最早的日志。
有关更多详细信息,Docker在以下位置提供了有关所有驱动程序的文档:https://docs.docker.com/config/containers/logging/configure/
我也有一个介绍该主题的演讲。使用max-file
查看演示者注释:https://sudo-bmitch.github.io/presentations/dc2019/tips-and-tricks-of-the-captains.html#logs
答案 6 :(得分:0)
version: "3.9"
services:
some-service:
image: some-service
logging:
driver: "json-file"
options:
max-size: "200k"
max-file: "10"
上面显示的示例将存储日志文件,直到它们达到 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/