存储

默认情况下,在容器内创建的所有文件都存储在一个位于只读、不可变镜像层之上的可写容器层中。

写入容器层的数据在容器被销毁时不会持久化。这意味着如果另一个进程需要这些数据,很难将它们从容器中取出。

可写层对每个容器都是唯一的。您无法轻易地将数据从可写层提取到主机或其他容器。

存储挂载选项

Docker 支持以下类型的存储挂载,用于将数据存储在容器的可写层之外:

无论您选择使用哪种类型的挂载,从容器内部看,数据都是一样的。它在容器的文件系统中以目录或单个文件的形式暴露出来。

卷挂载

卷是由 Docker 守护进程管理的持久化存储机制。即使使用它们地容器被移除,它们也能保留数据。卷数据存储在主机的文件系统上,但要与卷中的数据交互,您必须将卷挂载到容器。直接访问或与卷数据交互是不支持的、未定义的行为,并可能导致卷或其数据以意想不到的方式损坏。

卷是性能关键型数据处理和长期存储需求的理想选择。由于存储位置在守护进程主机上管理,卷提供了与直接访问主机文件系统相同的原始文件性能。

绑定挂载

绑定挂载在主机系统路径和容器之间创建直接链接,允许访问存储在主机上任何位置的文件或目录。由于它们不受 Docker 隔离,主机上的非 Docker 进程和容器进程都可以同时修改挂载的文件。

当您需要能够从容器和主机两端访问文件时,请使用绑定挂载。

tmpfs 挂载

tmpfs 挂载直接将文件存储在主机的内存中,确保数据不会写入磁盘。这种存储是临时的:当容器停止或重启,或主机重启时,数据会丢失。tmpfs 挂载不会在 Docker 主机或容器的文件系统中持久化数据。

这些挂载适用于需要临时内存存储的场景,例如缓存中间数据、处理凭证等敏感信息或减少磁盘 I/O。仅当数据不需要在当前容器会话结束后持久化时,才使用 tmpfs 挂载。

命名管道

命名管道可用于 Docker 主机和容器之间的通信。常见用例是在容器内运行第三方工具,并使用命名管道连接到 Docker Engine API。

后续步骤

  • 了解更多关于的信息。
  • 了解更多关于绑定挂载的信息。
  • 了解更多关于tmpfs 挂载的信息。
  • 了解更多关于存储驱动的信息,它们与绑定挂载或卷无关,但允许您将数据存储在容器的可写层中。
© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.