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 清理环境操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Docker Hub运行原理及实现过程解析

    Docker Hub运行原理及实现过程解析

    这篇文章主要介绍了Docker Hub运行原理及实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • Docker案例分析:搭建MySQL数据库服务

    Docker案例分析:搭建MySQL数据库服务

    这篇文章主要介绍了Docker案例分析:搭建MySQL数据库服务,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Docker批量删除特定前缀的镜像Tag的方法

    Docker批量删除特定前缀的镜像Tag的方法

    在 Docker 容器化技术日益普及的今天,镜像管理成为了一个不可忽视的问题,随着项目的发展,镜像的数量会迅速增加,特别是当我们频繁地构建和推送新版本时,如果不及时清理,这些镜像会占用大量的存储空间,影响系统性能,本文介绍了Docker批量删除特定前缀的镜像Tag的方法
    2024-11-11
  • 详解Docker中容器的备份、恢复和迁移

    详解Docker中容器的备份、恢复和迁移

    本篇文章主要介绍了详解Docker中容器的备份、恢复和迁移 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-03-03
  • 在Centos7 中更改Docker默认镜像和容器的位置

    在Centos7 中更改Docker默认镜像和容器的位置

    这篇文章主要介绍了在Centos7 下更改Docker默认镜像和容器的位置,需要的朋友可以参考下
    2017-05-05
  • docker Desktop安装WSL --update报错问题成功解决办法

    docker Desktop安装WSL --update报错问题成功解决办法

    这篇文章主要介绍了如何在Windows 11上设置WSL2为默认版本,解决WSL2安装和卸载过程中遇到的问题,包括强制中断命令、wsl--uninstall命令无效以及手动删除Linux发行版的方法,需要的朋友可以参考下
    2025-02-02
  • Docker服务的重启服务命令详解(systemctl restart docker)

    Docker服务的重启服务命令详解(systemctl restart docker)

    这篇文章主要介绍了Docker服务的重启服务命令(systemctl restart docker),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 如何在 Ubuntu 下通过 Docker 部署 Caddy 服务器

    如何在 Ubuntu 下通过 Docker 部署 Caddy 

    本文介绍了如何在Ubuntu系统下通过Docker部署Caddy服务器,首先安装Docker,然后启动Docker服务并设置为开机自启,接着拉取Caddy镜像,并创建一个Caddyfile配置文件,使用命令运行Caddy容器,并将本地的Caddyfile挂载到容器内,感兴趣的朋友跟随小编一起看看吧
    2025-03-03
  • docker 搭建部署 YAPI 框架的详细过程

    docker 搭建部署 YAPI 框架的详细过程

    Yapi是一个高效、易用、功能强大的接口文档管理工具,旨在为开发、产品、测试人员提供更优雅的接口管理服务,可以帮助开发者轻松创建、发布、维护 AP,这篇文章主要介绍了docker 搭建部署 YAPI 框架,需要的朋友可以参考下
    2022-08-08

最新评论