docker使用volume和bind mount的区别及说明

 更新时间:2024年11月20日 10:59:42   作者:乔丹搞IT  
文章介绍了Docker中Volume和BindMount两种数据持久化机制的区别,Volume由Docker管理,支持数据共享和加密,而BindMount将宿主机上的文件或目录直接挂载到容器中,性能较好但依赖于宿主机的文件系统结构

使用volume和bind mount的区别

代码示例:

在Docker中,Volume和Bind Mount是两种不同的数据持久化机制,它们都用于将数据从容器持久化到宿主机,但它们之间存在一些关键的区别。

Volume

  • Volume是由Docker管理的存储卷,它在宿主机上的位置对于用户来说是透明的,由Docker自动管理。
  • Volume可以实现容器间的数据共享,并且可以在容器被删除后仍然存在。
  • Volume可以通过Docker CLI命令或API进行管理,例如使用docker volume create创建一个新的Volume,使用docker volume inspect查看Volume的详细信息。
  • Volume支持数据的预填充,并且可以使用Volume驱动程序在远程主机或云提供商上存储数据,甚至可以加密Volume的内容或添加其他功能。
  • Volume通常提供更好的性能,尤其是在Docker Desktop上相比于Mac和Windows宿主机上的Bind Mount。
  • Volume可以在Linux和Windows容器中使用。

Bind Mount

  • Bind Mount将宿主机上的文件或目录直接挂载到容器中,文件或目录在宿主机上的位置是由用户指定的。
  • Bind Mount的性能通常非常好,但它们依赖于宿主机的文件系统具有特定的目录结构。
  • 使用Bind Mount时,如果宿主机上的路径不存在,Docker不会自动创建它,而是会报错。
  • Bind Mount可以设置为只读模式,增加了数据的安全性。
  • Bind Mount不支持Volume驱动程序,也不支持在远程主机或云提供商上存储数据。

例子

使用Volume的命令可能如下:

docker run -d --name devtest -v myvol2:/app nginx:latest

其中myvol2是Volume的名字,如果Volume不存在,Docker会自动创建它。

使用Bind Mount的命令可能如下:

docker run -d --name devtest -v "$(pwd)"/target:/app nginx:latest

这里$(pwd)代表当前工作目录的绝对路径,target是宿主机上的目录,/app是容器内的挂载点。

总的来说,如果你需要一个由Docker完全管理的数据持久化方案,并且希望在容器间共享数据,那么Volume是更好的选择。

如果你需要更细粒度的控制,或者希望容器能够访问宿主机上的特定文件或目录,那么Bind Mount可能更适合你的需求。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • docker 已经运行的容器重命名

    docker 已经运行的容器重命名

    有时我们将容器名字起的不太好,想改一下,本文主要介绍了docker 已经运行的容器重命名,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-02-02
  • Docker NFS volume创建与使用方式

    Docker NFS volume创建与使用方式

    这篇文章主要介绍了Docker NFS volume创建与使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Docker Desktop安装本地Kubernetes集群的实现

    Docker Desktop安装本地Kubernetes集群的实现

    Kubernetes用于协调高度可用的计算机集群,本文主要介绍了Docker Desktop安装本地Kubernetes集群的实现,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • docker中mysql初始化及启动失败问题解决方案

    docker中mysql初始化及启动失败问题解决方案

    这篇文章主要介绍了docker中mysql初始化及启动失败问题解决方案的相关资料,需要的朋友可以参考下
    2016-10-10
  • 使用WSL修改docker文件存储位置具体步骤

    使用WSL修改docker文件存储位置具体步骤

    这篇文章主要为大家介绍了使用WSL修改docker文件存储位置具体步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • docker-compose部署配置jenkins的详细教程

    docker-compose部署配置jenkins的详细教程

    这篇文章主要介绍了docker-compose部署配置jenkins的详细教程,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • docker镜像管理命令详解

    docker镜像管理命令详解

    这篇文章主要介绍了docker镜像管理命令,我们也可以使用命令来搜索镜像,比如我们需要一个tomcat的镜像来作为我们的web服务,我们可以通过 docker search 命令搜索tomcat来寻找适合我们的镜像,本文给大家介绍的非常详细,需要的朋友参考下吧
    2022-07-07
  • Docker Buildx构建多平台镜像的实现

    Docker Buildx构建多平台镜像的实现

    本文主要介绍了Docker Buildx构建多平台镜像的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Docker容器如何配置权限

    Docker容器如何配置权限

    本文介绍了在Docker容器中配置用户和权限的方法,包括在Dockerfile中设置用户和权限,使用dockerrun命令设置用户和权限,以及在DockerCompose文件中设置用户和权限,通过这些方法,可以解决容器内部权限不足的问题
    2024-11-11
  • 快速安装openshift的步骤详解

    快速安装openshift的步骤详解

    今天小编就为大家分享一篇关于快速安装openshift的步骤详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12

最新评论