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

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

    • Git 使用 ssh 与 https 的区别
    • Git 回滚、重置与变基
    • 文件名大小写发生变化的坑
    • Git 提交信息规范解读与实践指南
    • Git 历史邮箱统一 + 推送 GitHub 后的远程分支处理指南
  • Docker

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

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

    • blog 使用 Github-Actions 部署 docker 服务器
  • 服务器

    • 腾讯云使用 ssh 连接服务器(Linux 实例)
    • ssl 证书安装到 docker 服务器
    • 操作系统与架构
    • ssh 连接时长问题
  • 掌握 hosts 文件:本地开发、域名重定向与回调处理完全指南
  • Cloudflare DNS与代理:完全指南

挂载和卷的区别

绑定挂载(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 打包多平台镜像