【发布时间】:2021-11-28 11:03:04
【问题描述】:
我在各种文章中看到了术语“绑定挂载”和“主机卷”,但没有一篇提到它们是否相同。但看看它们的功能,它们看起来几乎是一回事。任何人都可以回答它是否是同一件事?如果不是,有什么区别?
参考:
【问题讨论】:
标签: docker containers docker-volume
我在各种文章中看到了术语“绑定挂载”和“主机卷”,但没有一篇提到它们是否相同。但看看它们的功能,它们看起来几乎是一回事。任何人都可以回答它是否是同一件事?如果不是,有什么区别?
参考:
【问题讨论】:
标签: docker containers docker-volume
它们是不同的概念。
如bind mounts中所述:
绑定挂载从 Docker 早期就已经存在。与卷相比,绑定挂载的功能有限。当您使用绑定挂载时,主机上的文件或目录会挂载到容器中。文件或目录由其在主机上的绝对路径引用。相比之下,当您使用卷时,会在主机上 Docker 的存储目录中创建一个新目录,并由 Docker 管理该目录的内容。
正如volumes中提到的:
卷是保存由 并由 Docker 容器使用。虽然绑定挂载依赖于 主机的目录结构和操作系统,卷是完全 由 Docker 管理。与绑定挂载相比,卷有几个优点:
- 卷比绑定挂载更容易备份或迁移。
- 您可以使用 Docker CLI 命令或 Docker API 管理卷。
- 卷可在 Linux 和 Windows 容器上运行。
- 可以在多个容器之间更安全地共享卷。
- 卷驱动程序可让您将卷存储在远程主机或云提供商上、加密卷的内容或添加其他功能。
- 新卷的内容可以由容器预先填充。
- Docker Desktop 上的卷比来自 Mac 和 Windows 主机的绑定挂载具有更高的性能。
【讨论】:
“绑定挂载” 是指您让容器查看和使用主机上普通文件系统中的普通目录。容器中运行的程序所做的更改将在主机的文件系统中可见。
“卷” 是主机上的单个文件,其作用类似于容器可见的整个文件系统。您通常无法从主机看到里面的内容。
【讨论】:
我想通了。
Docker 中有 3 种类型的存储。
1. Bind mounts-also known as host volumes.
2. Anonymous volumes.
3. Named volumes.
所以绑定挂载 = 主机卷。他们是一样的东西。 “主机卷”必须是一个不赞成的术语,因为我在 Docker 文档中看不到它。但从1-2年前发表的各种文章中就可以看出。
将其称为“主机卷”的示例:
https://docs.drone.io/pipeline/docker/syntax/volumes/host/
https://spin.atomicobject.com/2019/07/11/docker-volumes-explained/
【讨论】: