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

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

恭喜,你已经发现了Docker的大问题之一!

正如Nathaniel所说,Docker认为它拥有/var/lib/docker下所有东西的所有权,所以试图从Docker后面删除文件可能不起作用。

但是,根据问题7333和PR 9753中的组件 ,它看起来像人们成功地使用logrotatecopytruncate指令来旋转docker日志。 这两个链接都值得一读,因为它们包含了关于Docker日志logging陷阱和一些潜在解决scheme的长篇讨论。

理想情况下,Docker本身会对日志pipe理有更好的本地支持。 在此之前,这里有一些替代scheme要考虑:

如果您控制应用程序的源代码,则可以configuration所有内容以logging到syslog,而不是stdout / stderr。 然后,您可以拥有多种解决scheme,从在容器中运行syslog服务到在容器中公开主机的/dev/log

另一个select是在你的容器中运行systemd ,并使用它来启动你的服务。 systemd会从你的服务中收集stdout / stderr,并把它提供给journald,而journald会处理日志轮换等事情(并且给你一个相当灵活的查询日志的机制)。

当你删除容器时,这些应该被清理干净。 (因此,删除它们是不好的 ,因为Docker认为它可以控制/var/lib/docker 。)