删除在/ var / lib / docker / containers / HASH中生成的docker日志是否安全

时间:2015-03-06 08:40:55

标签: docker boot2docker

现在的日志目前是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

2 个答案:

答案 0 :(得分:7)

恭喜,您发现了Docker未解决的一个大问题!

正如Nathaniel所说,Docker假设它对/var/lib/docker下的内容具有完全的所有权,因此尝试从Docker后面删除文件可能无效。

但是,根据issue 7333PR 9753中的组件,人们似乎成功使用logrotatecopytruncate指令来轮换泊坞日志。这两个链接值得一读,因为它们包含了对Docker日志记录陷阱和一些潜在解决方案的长期讨论。

理想情况下,Docker本身对日志管理有更好的原生支持。在此之前,可以考虑以下几种方法:

如果您控制应用程序的源,则可以将所有内容配置为记录到syslog而不是stdout / stderr。然后,您可以拥有各种解决方案,从在容器内运行syslog服务到在容器内公开主机/dev/log

另一种选择是在容器内运行systemd,并使用它来启动服务。 systemd将从您的服务中收集stdout / stderr并将其提供给journald,而journald将处理日志轮换等事情(并且还为您提供了一种相当灵活的查询日志的机制)。

答案 1 :(得分:2)

删除容器时应该清理这些内容。 (因此,可以删除它们,因为Docker认为它可以控制/var/lib/docker。)