SSF0SSF0
首页
前端
  • Node
  • Go
  • Python
  • MySql
  • Bash
  • Git
  • Docker
  • VuePress
  • CI/CD
  • 服务器
  • 网站
  • 学习资料
  • 软件
  • 开源项目
Timeline
Github
标签
分类
首页
前端
  • Node
  • Go
  • Python
  • MySql
  • Bash
  • Git
  • Docker
  • VuePress
  • CI/CD
  • 服务器
  • 网站
  • 学习资料
  • 软件
  • 开源项目
Timeline
Github
标签
分类
  • Bash

    • Bash 获取路径在不同类型电脑的区别
  • Git

    • Git 使用 ssh 与 https 的区别
    • Git 回滚、重置与变基
    • 文件名大小写发生变化的坑
    • Git 提交信息规范解读与实践指南
    • Git 历史邮箱统一
    • Git 拉取 GitHub 失败、配置代理及 DNS 问题排查总结
    • Git 实战教程:如何使用 Cherry-pick 或直接覆盖让两个分支同步公共功能
  • Docker

    • Docker 命令大全
    • nginx 镜像部署静态文件
    • Docker 运行命令说明
    • 使用 node 镜像运行本地项目
    • 挂载和卷的区别
    • Docker 打包多平台镜像
    • Docker 使用 mysql
    • Docker 容器网络访问问题总结
    • Docker 容器绑定ip问题
  • VuePress

    • 使用 VuePress 搭建个人博客概括
  • CI/CD

    • blog 使用 Github-Actions 部署 docker 服务器
    • GitHub Actions项目部署国内服务器文件传输时间优化
  • 服务器

    • 腾讯云使用 ssh 连接服务器(Linux 实例)
    • ssl 证书安装到 docker 服务器
    • 操作系统与架构
    • ssh 连接时长问题
    • Oracle 服务器基础知识
    • OCI 专属网络拓扑图
    • 甲骨文-宝塔面板无法访问问题
    • 甲骨文服务器防火墙问题排查记录
    • 甲骨文重启后宝塔面板无法访问
  • hosts 文件指南
  • Cloudflare DNS与代理
  • 跨平台定时任务设置指南
  • Edge 浏览器连不上代理?一场由插件引发的“夺权”与 v2rayN 的深度探索
  • 二级域名访问异常排查记录
  • 软件走代理时如何抓包
  • JetBrains AI 使用
  • Clash 代理工作原理详解

挂载和卷的区别

绑定挂载(Bind Mounts)和 Docker 卷(Docker Volumes)是 Docker 中用于在主机和容器之间共享数据的两种主要方式,是两种不同的存储机制。它们各自有不同的特点和适用场景。以下是两者的主要区别:

绑定挂载(Bind Mounts)

  1. 🌟 定义:

    • 绑定挂载将主机文件系统中的目录或文件挂载到容器中的指定路径。
  2. 行为:

    • 主机目录的内容会覆盖容器目录的内容。

    • 容器目录原本的内容被“遮蔽”,但不会被删除。

    • 主机和容器之间的文件和目录是实时同步的,任何一方的修改都会立即反映在另一方。

  3. 路径:

    • 绑定挂载使用主机文件系统中的具体路径。

    • 例如,-v /host/path:/container/path。

  4. 管理:

    • 绑定挂载不受 Docker 管理,直接使用主机上的文件和目录。

    • 任何对挂载路径的更改都会立即反映在容器中。

  5. 灵活性:

    • 非常灵活,可以挂载任何主机上的文件或目录。

    • 适合需要直接访问主机文件系统的应用场景,例如开发环境中需要频繁修改代码。

  6. 安全性:

    • 由于直接访问主机文件系统,可能会带来安全风险。

    • 需要小心处理权限和安全性问题。

Docker 卷(Docker Volumes)

  1. 🌟 定义:

    • Docker 卷是由 Docker 管理的存储,独立于主机文件系统,相当于在 Docker 的内部存储位置开辟了一块独立的存储空间,这块存储空间可以被多个容器共享和使用。
  2. 行为:

    • 卷的数据存储在 Docker 的专用目录中(例如 /var/lib/docker/volumes)。

    • 卷可以在多个容器之间共享和重用。

    • 卷的内容不会被容器目录的内容覆盖,除非显式地进行数据复制。

  3. 路径:

    • Docker 卷由 Docker 管理,不依赖于主机文件系统的具体路径。

    • 例如,-v volume_name:/container/path。

  4. 管理:

    • Docker 卷由 Docker 引擎管理,存储在 Docker 默认的存储位置(通常在 /var/lib/docker/volumes/ 下)。

    • 可以使用 docker volume 命令进行管理(创建、删除、查看等)。

  5. 灵活性:

    • 适合需要持久化数据的场景,例如数据库的数据目录。

    • 可以在多个容器之间共享数据。

  6. 安全性:

    • 由于 Docker 卷由 Docker 管理,通常比绑定挂载更安全。

    • 可以更好地控制数据访问和权限。

适用场景

  • 绑定挂载:

    • 开发环境:需要频繁修改代码并立即在容器中看到效果。

    • 直接访问主机文件系统:需要访问主机上的特定文件或目录。

  • Docker 卷:

    • 持久化数据:需要在容器重启或删除后保留数据,例如数据库存储。

    • 数据共享:需要在多个容器之间共享数据。

    • 数据备份和恢复:Docker 卷可以方便地备份和恢复。

示例

绑定挂载:

docker run -d --name my_container -v /host/path:/container/path my_image

Docker 卷:

# 创建卷
docker volume create my_volume
# 使用卷
docker run -d --name my_container -v my_volume:/container/path my_image

总结

  • 绑定挂载:灵活但需要小心处理安全和权限问题,适合开发环境和需要直接访问主机文件系统的场景。
  • Docker 卷:由 Docker 管理,适合需要持久化数据和在多个容器之间共享数据的场景。 根据你的具体需求选择合适的挂载方式,可以更好地管理和使用 Docker 容器中的数据。
最后更新时间:
贡献者: 何风顺
上一页
使用 node 镜像运行本地项目
下一页
Docker 打包多平台镜像