默认情况下,在容器内创建的所有文件都存储在可写容器层中。 这意味着:
- 容器删除时数据丢失,并且其他进程很难从容器中读取数据。
- 容器的可写层紧密耦合到运行容器的主机。 您无法轻松地将数据移动到其他位置。
- 写入容器的可写层需要存储驱动程序来管理文件系统。 存储驱动程序使用Linux内核提供联合文件系统。 与使用直接写入主机文件系统的数据卷相比,这种额外的抽象降低了性能。
Docker有两个容器选项可以在主机中存储文件,因此即使在容器停止之后文件仍然存在:卷和绑定挂载。 如果你在Linux上运行Docker,你也可以使用tmpfs mount。
选择正确的挂载方式
无论你选择那种挂载方式,在容器看来都一样。
一个简单的区分volumes(卷),bind mounts(绑定挂载), tmpfs 挂载的方法是,通过查看数据实际所在的位置。
- 卷存储在由Docker管理的主机文件系统的一部分中(Linux上的/ var / lib / docker / volumes /)。
- 绑定挂载可以存储在主机系统的任何位置。 它们甚至可能是重要的系统文件或目录。 Docker主机或Docker容器上的非Docker进程可以随时修改它们。
- tmpfs挂载仅存储在主机系统的内存中&