From 4be063afb141d89c221624dcae8a04936914f6a3 Mon Sep 17 00:00:00 2001 From: titor-z Date: Thu, 19 Dec 2024 19:38:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AD=98=E5=82=A8=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/storage/index.md | 50 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 docs/storage/index.md diff --git a/docs/storage/index.md b/docs/storage/index.md new file mode 100644 index 0000000..6b760ec --- /dev/null +++ b/docs/storage/index.md @@ -0,0 +1,50 @@ +--- +outline: [2,3] +--- +# 存储 + +默认情况下,在容器内创建的所有文件都存储在位于只读、不可变图像层之上的可写容器层上。 +当容器被销毁时,写入容器层的数据不会保留。这意味着如果另一个进程需要数据,则可能很难从容器中获取数据。 +每个容器的可写层都是唯一的。您无法轻松地将数据从可写层提取到主机或另一个容器。 + +## 存储挂载选项 +Docker 支持以下类型的存储挂载,用于在容器的可写层之外存储数据: +- [卷挂载](https://docs.docker.com/engine/storage/#volume-mounts) +- [绑定挂载](https://docs.docker.com/engine/storage/#bind-mounts) +- [tmpfs 挂载](https://docs.docker.com/engine/storage/#tmpfs-mounts) +- [命名管道](https://docs.docker.com/engine/storage/#named-pipes) + +无论您选择使用哪种类型的挂载,容器中的数据看起来都相同。它作为容器文件系统中的目录或单个文件公开。 + +### 卷挂载 +卷是由 Docker 守护程序管理的持久性存储机制。 +即使在使用它们的容器被删除后,它们也会保留数据。 +卷数据存储在主机上的文件系统上,但为了与卷中的数据进行交互,您必须将卷挂载到容器中。 +直接访问卷数据或与卷数据交互是不受支持的、未定义的行为,并且可能会导致卷或其数据以意外的方式中断。 + +卷非常适合性能关键型数据处理和长期存储需求。 +由于存储位置是在守护程序主机上管理的,因此卷提供与直接访问主机文件系统相同的原始文件性能。 + +### 绑定挂载 +绑定挂载在主机系统路径和容器之间创建直接链接,允许访问存储在主机上任何位置的文件或目录。 +由于它们未被 Docker 隔离,因此主机上的非 Docker 进程和容器进程都可以同时修改挂载的文件。 + +当您需要能够从容器和主机访问文件时,请使用 bind 挂载。 + +### TMPFS 挂载 +tmpfs 挂载将文件直接存储在主机的内存中,确保数据不会写入磁盘。 +这种存储是短暂的:当容器停止或重新启动,或者当主机重新启动时,数据会丢失。 +tmpfs 挂载不会将数据保留在 Docker 主机上或容器的文件系统中。 + +这些挂载适用于需要临时内存存储的场景,例如缓存中间数据、处理敏感信息(如凭证)或减少磁盘 I/O。 +仅当数据不需要在当前容器会话之外保留时,才使用 tmpfs 挂载。 + +### 命名管道 +[命名管道](https://docs.microsoft.com/en-us/windows/desktop/ipc/named-pipes) 可用于 Docker 主机和容器之间的通信。 +常见 用例是在容器内运行第三方工具并连接到 使用命名管道的 Docker 引擎 API。 + +## 后续步骤 +- 进一步了解 [卷](https://docs.docker.com/engine/storage/volumes/)。 +- 进一步了解 [绑定挂载](https://docs.docker.com/engine/storage/bind-mounts/)。 +- 进一步了解 [tmpfs 挂载](https://docs.docker.com/engine/storage/tmpfs/)。 +- 进一步了解 [存储驱动程序](https://docs.docker.com/engine/storage/drivers/),它们与 BIND 挂载或卷无关,但允许您将数据存储在容器的可写层中。 \ No newline at end of file