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

当主机不正常关闭时,docker容器中的文件会发生什么情况?,docker,docker-compose,dockerfile,docker-machine,shutdown,Docker,Docker Compose,Dockerfile,Docker Machine,Shutdown,假设我有一个docker容器运行某个应用程序,它有时会将一些数据写入未映射到主机的文件夹中的文件。如果主机以不正常的方式关闭(如拔出电源线),那么存储在容器中但未映射到主机的文件会发生什么情况?他们会坚持吗?它被删除了吗?文件被删除了。容器在本质上是短暂的。当容器启动时,它会在图像的顶部创建一个新的可写层,您所做的任何更改都在该层上。如果您没有将该层数据存储/映射到某个持久位置,然后,一旦容器或Docker守护程序或主机重新启动,所有数据都将丢失。如果系统发生断电或崩溃,容器将进入停止状态,断电

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

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

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


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

如果您想保持任何类型的状态,然后,您应该在装入的卷上执行此操作。如前所述,旋转容器的数据存储绑定到容器,一旦容器被杀死,不再旋转,原则上容器的全部内容都会丢失(在kubernetes/openshift中,容器在吊舱中运行,机制相同),如果您想拥有一些持久性存储,那么您必须装载一些volue,然后您可以将其重新连接到新旋转的容器以持久化数据