Docker中的绑定装载和主机卷是同一回事吗?

368yc8dk  于 2022-12-18  发布在  Docker
关注(0)|答案(4)|浏览(199)

我在很多文章中看到过“bind mount”和“host volume”这两个词,但是没有一篇文章提到它们是不是一回事。但是从它们的功能来看,它们看起来几乎是一回事。有人能回答它们是不是一回事吗?如果不是,有什么区别?
参考:
Docker Docs - Use bind mounts
https://blog.logrocket.com/docker-volumes-vs-bind-mounts/

0tdrvxhp

0tdrvxhp1#

它们是不同的概念。
bind mounts中所述:
绑定装载从Docker早期就已出现。与卷相比,绑定装载的功能有限。使用绑定装载时,主机上的文件或目录将装载到容器中。文件或目录将由其在主机上的绝对路径引用。相比之下,使用卷时,将在主机上Docker的存储目录中创建一个新目录。Docker管理该目录的内容。
volumes中所述:
卷是持久保存Docker容器生成和使用的数据的首选机制。虽然绑定装载取决于主机的目录结构和操作系统,但卷完全由Docker管理。卷与绑定装载相比有以下几个优点:

  • 卷比绑定装载更易于备份或迁移。
  • 您可以使用Docker CLI命令或Docker API管理卷。
  • 卷可在Linux和Windows容器上使用。
  • 卷可以更安全地在多个容器之间共享。
  • 卷驱动程序允许您将卷存储在远程主机或云提供商上,以加密卷的内容或添加其他功能。
  • 新卷可以通过容器预先填充其内容。
  • Docker Desktop上的卷比Mac和Windows主机上的绑定装载具有更高的性能。
lrpiutwd

lrpiutwd2#

“绑定挂载”是指你让你的容器看到并使用你主机上一个普通文件系统中的一个普通目录。在容器中运行的程序所做的更改将在你主机的文件系统中可见。
“卷”是主机上的一个文件,它就像一个完整的文件系统,对容器可见,通常你不能从主机上看到里面的内容。

toiithl6

toiithl63#

我能想出来。
Docker中有3种存储类型。

1. Bind mounts-also known as host volumes. 
2. Anonymous volumes. 
3. Named volumes.

所以bind mount = host volume。它们是一回事。“Host volume”一定是一个不受欢迎的术语,因为我在Docker文档中看不到它。但是在1-2年前发表的各种文章中可以看到它。
将其称为“主机卷”的示例:
https://docs.drone.io/pipeline/docker/syntax/volumes/host/
https://spin.atomicobject.com/2019/07/11/docker-volumes-explained/

pgvzfuti

pgvzfuti4#

此文档页面Manage data in Docker非常有用

*存储在Docker管理的主机文件系统的一部分中(Linux上为/var/lib/docker/volumes/)。非Docker进程不应修改文件系统的这一部分。卷是在Docker中持久保存数据的最佳方式。
*绑定装载可以存储在主机系统上的任何位置。它们甚至可以是重要的系统文件或目录。Docker主机或Docker容器上的非Docker进程可以随时修改它们。

相关问题