pojin (ID: 1)
头衔:论坛坛主
等级:究级天王[荣誉]
积分:1301
发帖:99 篇
来自:保密
注册:2022-08-28 23:20:57
造访:2025-03-23 21:18:24
发帖:99 篇
来自:保密
注册:2022-08-28 23:20:57
造访:2025-03-23 21:18:24
[ 第 1 楼 ]
回复

大家都知道docker可以通过命令docker logs container来查看容器的日志,看着日志一天天的增大是不是心慌慌啊,于是我也在网上找找,看看Docker容器的日志文件存在宿主机的什么位置上。
于是按照网上所说,在/var/lib/docker/containers/container_id目录下找,可惜失望了,怎么都找不到json.log文件,可以在百度上找到的都是说在这个目录下,这下心好痛,好像迷途的羔羊。
可以事情并没有想的那么糟,静下心慢慢找,首先看一下容器信息:
docker inspect container_id
在这个输出的Json内容中找到如下信息:
"LogConfig": {
"Type": "journald",
"Config": {}
},
从这里可以看到,日志的类型是journald,而不是网上所说的,json-file。
接下来就找journald日志的目录了,百度了一下,在/var/log/journal/c28d40cbc8e3adcb4e32d9779a77b39e这个目录下。下面有两个文件:
system@00000000000000000000000000000000-0000000000000421-00057e5d9c762778.journal
system.journal
我cat了一下,发现不是文本文件,应该是压缩后的日志文件,经过多方验证,它们就是我们使用docker logs查看的日志所在源。当然其它系统有可能是在/run/log/journal/465f5657df1a43b1a0eac7125e439f46个目录下,具体可以查看journal文档,后面32位字符串是随机的,有可能不一样。
文件位已经找到了,你可以重命名看看,docker logs container时就没有日志了,而且后面的日志就无法生成了。这时就要重启journald服务了,大家可以参考下网上的journald日志清理方法。
也可以配置journald的相关参数/etc/systemd/journald.conf。
可以通过journalctl管理journal日志
// 验证journal日志,也可以查看journal日志目录
journalctl --verify
// 查看日志磁盘占用空间
journalctl --disk-usage
// 我们不能通过删除system.journal文件删除,否则会出问题
// 设置日志保留时间
journalctl --vacuum-time=2d
// 设置日志保留大小
journalctl --vacuum-size=500M
也可以通过修改配置文件长久生效:
// /etc/systemd/journald.conf
SystemMaxUse=16M
ForwardToSyslog=no
要重启服务 systemctl restart systemd-journald.service
具体配置可以参见官方文档:https://www.freedesktop.org/software/systemd/man/journald.conf.html
PS:有时候你会发现Linux系统内存使用量越来越小也可能与日志有关,因为journal会先将日志放到内存中,再更新到磁盘上,致于使用多少内存,可以了解journal.conf黙认配置,也可以修改。另外,在日志目录中除了有一个system.journal的日志文件外还有其它的文件,这些是历史日志文件,是可以删除的,而system.journal不要删除,删除日志记录就不能用了。这些历史日志文件的大小也与配置有关。
于是按照网上所说,在/var/lib/docker/containers/container_id目录下找,可惜失望了,怎么都找不到json.log文件,可以在百度上找到的都是说在这个目录下,这下心好痛,好像迷途的羔羊。
可以事情并没有想的那么糟,静下心慢慢找,首先看一下容器信息:
docker inspect container_id
在这个输出的Json内容中找到如下信息:
"LogConfig": {
"Type": "journald",
"Config": {}
},
从这里可以看到,日志的类型是journald,而不是网上所说的,json-file。
接下来就找journald日志的目录了,百度了一下,在/var/log/journal/c28d40cbc8e3adcb4e32d9779a77b39e这个目录下。下面有两个文件:
system@00000000000000000000000000000000-0000000000000421-00057e5d9c762778.journal
system.journal
我cat了一下,发现不是文本文件,应该是压缩后的日志文件,经过多方验证,它们就是我们使用docker logs查看的日志所在源。当然其它系统有可能是在/run/log/journal/465f5657df1a43b1a0eac7125e439f46个目录下,具体可以查看journal文档,后面32位字符串是随机的,有可能不一样。
文件位已经找到了,你可以重命名看看,docker logs container时就没有日志了,而且后面的日志就无法生成了。这时就要重启journald服务了,大家可以参考下网上的journald日志清理方法。
也可以配置journald的相关参数/etc/systemd/journald.conf。
可以通过journalctl管理journal日志
// 验证journal日志,也可以查看journal日志目录
journalctl --verify
// 查看日志磁盘占用空间
journalctl --disk-usage
// 我们不能通过删除system.journal文件删除,否则会出问题
// 设置日志保留时间
journalctl --vacuum-time=2d
// 设置日志保留大小
journalctl --vacuum-size=500M
也可以通过修改配置文件长久生效:
// /etc/systemd/journald.conf
SystemMaxUse=16M
ForwardToSyslog=no
要重启服务 systemctl restart systemd-journald.service
具体配置可以参见官方文档:https://www.freedesktop.org/software/systemd/man/journald.conf.html
PS:有时候你会发现Linux系统内存使用量越来越小也可能与日志有关,因为journal会先将日志放到内存中,再更新到磁盘上,致于使用多少内存,可以了解journal.conf黙认配置,也可以修改。另外,在日志目录中除了有一个system.journal的日志文件外还有其它的文件,这些是历史日志文件,是可以删除的,而system.journal不要删除,删除日志记录就不能用了。这些历史日志文件的大小也与配置有关。

