现在的日志目前是13GB,我不知道删除日志是否安全,以及如何使日志变小
root@faith:/var/lib/docker/containers/f1ac17e833be2e5d1586d34c51324178bd18f969d
1046cbb59f10eaa4bcf84be# ls -alh
total 13G
drwx------ 2 root root 4.0K Mar 6 08:35 .
drwx------ 3 root root 4.0K Feb 24 11:00 ..
-rw-r--r-- 1 root root 2.1K Feb 24 10:15 config.json
-rw------- 1 root root 13G Feb 25 00:27 f1ac17e833be2e5d1586d34c51324178bd18f96
9d1046cbb59f10eaa4bcf84be-json.log
-rw-r--r-- 1 root root 611 Feb 24 10:15 hostconfig.json
-rw-r--r-- 1 root root 13 Feb 24 10:15 hostname
-rw-r--r-- 1 root root 175 Feb 24 10:15 hosts
-rw-r--r-- 1 root root 61 Feb 24 10:15 resolv.conf
-rw-r--r-- 1 root root 71 Feb 24 10:15 resolv.conf.hash
答案 0 :(得分:7)
恭喜,您发现了Docker未解决的一个大问题!
正如Nathaniel所说,Docker假设它对/var/lib/docker
下的内容具有完全的所有权,因此尝试从Docker后面删除文件可能无效。
但是,根据issue 7333和PR 9753中的组件,人们似乎成功使用logrotate
和copytruncate
指令来轮换泊坞日志。这两个链接值得一读,因为它们包含了对Docker日志记录陷阱和一些潜在解决方案的长期讨论。
理想情况下,Docker本身对日志管理有更好的原生支持。在此之前,可以考虑以下几种方法:
如果您控制应用程序的源,则可以将所有内容配置为记录到syslog而不是stdout / stderr。然后,您可以拥有各种解决方案,从在容器内运行syslog服务到在容器内公开主机/dev/log
。
另一种选择是在容器内运行systemd
,并使用它来启动服务。 systemd将从您的服务中收集stdout / stderr并将其提供给journald,而journald将处理日志轮换等事情(并且还为您提供了一种相当灵活的查询日志的机制)。
答案 1 :(得分:2)
删除容器时应该清理这些内容。 (因此,不可以删除它们,因为Docker认为它可以控制/var/lib/docker
。)