当主机不正常关闭时,docker 容器中的文件会发生什么?

dra*_*cz3 4 shutdown docker dockerfile docker-compose docker-machine

假设我有一个运行某个应用程序的 docker 容器,它有时会将一些数据写入文件夹中的文件,该文件未映射到主机。鉴于主机以不正常的方式关闭(例如拔掉电源线),存储在容器内但未映射到主机的文件会发生什么情况?他们会坚持吗?它会被移除吗?

Das*_*kar 9

文件被删除。容器本质上是短暂的。当容器启动时,它会在图像顶部创建一个新的可写层,您所做的任何更改都在该层上。如果您没有将该层数据存储/映射到某个持久位置,那么一旦容器或 Docker 守护程序或主机重新启动,所有数据都会丢失。

  • 如前所述,旋转容器的数据存储是与容器绑定的,一旦容器被杀死,不再旋转,从原理上讲,容器的全部内容都会丢失(在kubernetes / openshift中,容器运行在pod中,机制是相同),如果您想要一些持久存储,那么您必须安装一些卷,然后您可以将其重新连接到新旋转的容器以持久保存数据 (2认同)

小智 7

如果您的系统发生此类断电或崩溃,容器将进入停止状态,并且只要未终止,您在断电之前保存的任何数据都将保留在容器文件系统中。您可以通过重新启动该容器来再次访问您的数据。

但是,是的,正如 Dashrath Mundkar 和 xxxvodnikxxx 在他们的答案中所说,在容器的集群环境中,它会被杀死,并在其位置启动新的数据,因此如果数据未存储在任何持久安装的存储中,您将丢失所有数据。