如果我删除“docker 容器”中的 /tmp 文件夹会发生什么

如果我删除“docker 容器”中的 /tmp 文件夹会发生什么

如果我/tmp完全删除文件夹,会发生什么?

它会产生任何副作用还是会被操作系统重新创建如果是在重新启动时或者如果需要将某些内容存储在/tmp)?

在 docker 中会有什么区别吗?或者它的行为与 Linux 或 Unix 相同?

答案1

这在很大程度上取决于 UNIX 的版本以及该 UNIX 上运行的具体软件。例如,Kerberos 可能会将票证文件放在 下/tmp,因此删除该目录可能会导致所有用户登录失败(希望root有本地密码,或者...)。您可以使用sysdig或类似的跟踪软件

$ sudo sysdig "fd.name contains /tmp"
...

并让它运行一段时间以了解哪些软件/tmp以何种方式使用。 (“混沌猴子”方法是然后rm -rf /tmp看看什么失败了以及如何失败,这在生产中可能是也可能不是一个好主意......)同时,让我们看看sysdig收集了什么。

5311 20:43:52.918062202 0 postgres (24503) > close fd=6(<u>/tmp/.s.PGSQL.5432)
202619 20:45:08.252631819 0 rpm (24540) < open fd=4(<f>/tmp) name=/tmp flags=1(O_RDONLY) mode=0
202620 20:45:08.252633087 0 rpm (24540) > read fd=4(<f>/tmp) size=8192
202621 20:45:08.252633848 0 rpm (24540) < read res=-21(EISDIR) data=
202622 20:45:08.252634580 0 rpm (24540) > close fd=4(<f>/tmp)
202623 20:45:08.252635375 0 rpm (24540) < close res=0
202627 20:45:08.252650259 0 rpm (24540) < open fd=4(<f>/var/tmp) name=/var/tmp flags=1(O_RDONLY) mode=0

看起来我postgres在这个测试虚拟机上的某个时刻安装了(数据库不再工作,因为/tmp消失了可能是个问题?)并且rpm正在对目录做一些奇怪的事情tmp,不知道为什么......

操作系统通常不会重新创建它期望存在的东西;如果这是一个问题,您可以设置一个配置管理策略来创建/tmp和修复其权限(Ansible 在这方面会很糟糕,而使用 CFEngine 等本地代理进行配置管理可以更好地即时发现和纠正此类错误),但是配置管理软件如果缺少,也需要正确运行/tmp,这可能是也可能不是。 (但是,如果有人或某物破坏了随机操作系统目录,那么可以修复的东西就只有这么多......)

答案2

执行“ls -l /tmp”。 /tmp 中可能存在不是您创建的文件。这是因为许多服务和程序期望 /tmp 存在,并且通常配置为将其临时文件写入 /tmp。如果您完全删除 /tmp,您可能会破坏这些进程,并且它们不太可能为您重新创建它。不要删除它。

相关内容