Docker 存储管理的三种方式之卷、绑定挂载、临时存储

 更新时间:2025年02月14日 14:58:14   作者:drebander  
本文介绍了Docker的三种存储方式:卷(Volumes)、绑定挂载(BindMounts)和临时存储(Tmpfs),并详细讲解了每种方式的特点、使用方法和适用场景,感兴趣的朋友一起看看吧

Docker 提供了多种存储方式,用于容器中的数据存储。根据不同的使用场景,Docker 提供了 卷(Volumes)绑定挂载(Bind Mounts)临时存储(Tmpfs) 等存储方式。每种存储方式有不同的特性和使用场景,适用于不同的需求。

在这篇文章中,我们将深入探讨 Docker 存储管理的三种常见方式:卷(Volumes)绑定挂载(Bind Mounts)临时存储(Tmpfs)

1. Docker 存储类型概述

Docker 提供了以下三种主要的存储方式:

卷(Volumes):Docker 推荐使用的持久化存储方式,适用于长期存储。绑定挂载(Bind Mounts):将宿主机的文件系统目录挂载到容器中,适用于需要访问宿主机文件的场景。临时存储(Tmpfs):将临时文件存储在内存中,适用于不需要持久化的临时数据。

2. Docker 卷(Volumes)

2.1 什么是卷(Volumes)?

卷是 Docker 官方推荐的持久化数据存储方式,数据存储在 Docker 管理的目录中,容器停止或删除后,卷中的数据依然存在。卷不依赖宿主机的文件系统,因此具有更高的可移植性和性能。

卷的特点:

  • 卷(Volumes):Docker 推荐使用的持久化存储方式,适用于长期存储。
  • 绑定挂载(Bind Mounts):将宿主机的文件系统目录挂载到容器中,适用于需要访问宿主机文件的场景。
  • 临时存储(Tmpfs):将临时文件存储在内存中,适用于不需要持久化的临时数据

2.2 创建并使用卷

创建一个卷并将其挂载到容器中的命令:

docker volume create my-volume
docker run -d -v my-volume:/data --name my-container nginx
  • docker volume create:创建一个新的卷 my-volume
  • -v my-volume:/data:将卷挂载到容器内的 /data 目录。

如果容器在执行过程中对 /data 进行操作,数据将保存在卷 my-volume 中。

2.3 查看和管理卷

查看本地卷

docker volume ls

查看卷的详细信息

docker volume inspect my-volume

删除卷

docker volume rm my-volume

注意:如果有容器正在使用该卷,不能删除它。

2.4 卷的优点

  • 持久化:卷中的数据独立于容器生命周期,可以在容器删除后保留数据。
  • 性能:相较于绑定挂载,卷在 Docker 中的性能更优,尤其是在跨主机或容器共享数据时。
  • 易于管理:Docker 提供命令和 API 来管理卷,简化了数据的备份、迁移和恢复。

3. 绑定挂载(Bind Mounts)

3.1 什么是绑定挂载(Bind Mounts)?

绑定挂载将宿主机上的特定目录或文件直接挂载到容器中。这意味着容器和宿主机之间的数据可以直接共享和修改。与卷不同,绑定挂载直接依赖宿主机的文件系统。

绑定挂载的特点

  • 直接访问宿主机文件系统:容器可以直接访问宿主机上的任何文件或目录。
  • 实时更新:容器中的文件和宿主机文件是实时同步的,任何修改都会立即反映在双方。
  • 不适合跨主机使用:绑定挂载只能在同一台宿主机上使用,无法跨主机共享。

3.2 创建并使用绑定挂载

使用 -v--mount 参数来将宿主机目录挂载到容器中。

docker run -d -v /path/on/host:/path/in/container --name my-container nginx

/path/on/host:/path/in/container:将宿主机的 /path/on/host 目录挂载到容器的 /path/in/container 目录。

3.3 使用 --mount 语法

虽然 -v 参数可以创建绑定挂载,但推荐使用 --mount,它具有更清晰的语法和更强的配置能力。

docker run -d --mount type=bind,source=/path/on/host,target=/path/in/container --name my-container nginx

3.4 绑定挂载的优缺点

优点

  • 灵活性高:可以绑定宿主机上的任何文件或目录,适用于共享配置文件或日志文件等。
  • 实时同步:容器和宿主机的文件系统是直接同步的,修改后即时生效。

缺点

  • 安全风险:容器可以访问宿主机的任何目录,存在潜在的安全风险。
  • 不可移植性:绑定挂载依赖于宿主机的文件系统,无法轻松迁移到其他主机。

4. 临时存储(Tmpfs)

4.1 什么是临时存储(Tmpfs)?

临时存储(tmpfs)是将容器的数据存储在内存中的方式。它适用于存储不需要持久化的临时数据。tmpfs 存储的内容会在容器停止或重启时丢失。

临时存储的特点

  • 内存存储:数据存储在宿主机的内存中,不占用磁盘空间。
  • 快速读写:由于数据存储在内存中,读写速度非常快。
  • 临时数据:适用于不需要持久化的数据,例如临时缓存、会话信息等。

4.2 使用 tmpfs

可以通过 --mount 参数使用 tmpfs 存储。

docker run -d --mount type=tmpfs,target=/path/in/container --name my-container nginx
  • --mount type=tmpfs:指定挂载类型为 tmpfs,将数据存储在内存中。

4.3 临时存储的优缺点

优点

  • 高速存储:数据存储在内存中,读写速度极快。
  • 节省磁盘空间:不占用磁盘空间,适合临时文件存储。

缺点

  • 数据易丢失:容器停止或重启后,数据会丢失。
  • 内存消耗:数据存储在内存中,可能会占用大量内存,影响宿主机的性能。

5. 总结:选择合适的存储方式

存储方式特点适用场景
卷(Volumes)持久化存储,独立于宿主机,容器之间可共享持久化存储应用数据,如数据库文件,日志文件等
绑定挂载(Bind Mounts)容器与宿主机文件系统直接交互,实时同步需要访问宿主机文件或共享配置文件的场景
临时存储(Tmpfs)内存存储,数据快速读写,停止后丢失存储临时数据,如缓存、会话信息等
  • 卷(Volumes) 适用于持久化数据存储,是最推荐的存储方式。
  • 绑定挂载(Bind Mounts) 适用于需要与宿主机直接交互的场景。
  • 临时存储(Tmpfs) 适用于需要高性能和临时存储的数据。

选择合适的存储方式,可以使你的 Docker 容器化应用更加高效、安全,满足不同的需求! 🚀

到此这篇关于Docker 存储管理的三种方式之卷、绑定挂载、临时存储的文章就介绍到这了,更多相关docker卷 绑定挂载 临时存储内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 删除docker images中为none的镜像操作

    删除docker images中为none的镜像操作

    这篇文章主要介绍了删除docker images中为none的镜像操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • docker利用dockerfile构建镜像

    docker利用dockerfile构建镜像

    dockerfile是一种用于定义和构建docker镜像的文本文件,由一行行指令和参数组成,用于描述镜像的构建和配置过程;由基础映像、软件包安装、文件拷贝、环境变量设置等组成
    2024-10-10
  • Docker在Windows系统中的安装和使用方法详解

    Docker在Windows系统中的安装和使用方法详解

    这篇文章主要给大家介绍了关于Docker在Windows系统中的安装和使用方法,Docker允许开发中将应用、依赖、函数库、配置一起打包,形成可移植镜像Docker应用运行在容器中,需要的朋友可以参考下
    2023-09-09
  • FastAPI 部署在Docker的详细过程

    FastAPI 部署在Docker的详细过程

    这篇文章主要介绍了FastAPI 部署在 Docker的详细过程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-10-10
  • Docker部署后端项目的实现步骤

    Docker部署后端项目的实现步骤

    本文主要介绍了Docker部署后端项目的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-03-03
  • docker启动镜像失败后如何用日志logs查找失败原因及解决

    docker启动镜像失败后如何用日志logs查找失败原因及解决

    在使用docker的时候,在某些未知的情况下可能启动了容器,但是过了没几秒容器自动退出了,这个时候如何排查问题呢?下面这篇文章主要给大家介绍了关于docker启动镜像失败后如何用日志logs查找失败原因及解决的相关资料,需要的朋友可以参考下
    2023-05-05
  • docker prune命令定时清理不常用数据的操作方法

    docker prune命令定时清理不常用数据的操作方法

    使用docker引擎服务时间久了,会发现磁盘空间越来越大,现在要删除关于docker相关不用的数据来释放磁盘空间,这篇文章主要介绍了docker prune命令 可定时清理不常用数据,需要的朋友可以参考下
    2022-10-10
  • Docker快速部署主流脚本语言JavaScript的全过程

    Docker快速部署主流脚本语言JavaScript的全过程

    JavaScript是目前所有主流浏览器上唯一支持的脚本语言,这也是早期JavaScript的唯一用途,下面这篇文章主要给大家介绍了关于Docker快速部署主流脚本语言JavaScript的相关资料,需要的朋友可以参考下
    2023-02-02
  • Docker 部署Go的两种基础镜像的实现

    Docker 部署Go的两种基础镜像的实现

    这篇文章主要介绍了Docker 部署Go的两种基础镜像的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-04-04
  • docker compose安装、使用及快速入门教程

    docker compose安装、使用及快速入门教程

    Docker Compose是一个用于定义和运行多容器Docker应用程序的工具,这篇文章给大家介绍docker-compose 如何安装、使用及快速入门,感兴趣的朋友跟随小编一起看看吧
    2026-05-05

最新评论