数码杂锅

  • 首页
  • docker应用
    • docker知识
    • docker可视化管理
    • AIGC相关
    • 内网穿透
    • 在线文档
    • 笔记软件
    • 聊天软件
    • 刮削工具
    • 浏览器
    • 运维平台
    • 音乐软件
    • 网盘工具
    • 网络工具
    • 书籍管理
    • 在线教育
    • 备份同步
    • 相册管理
    • 协同办公
    • 抽奖系统
    • 稍后阅读
    • 工具集软件
    • 脚本平台
    • 密码管理
    • 数据库管理
    • 族谱管理
    • 思维导图
    • 视频会议
    • 文件管理
    • 监控管理
    • 远程桌面
    • Nas系统
    • 下载工具
    • devops代码托管
    • 导航书签
    • 办公软件
    • 聚合网盘
    • 智能家居
    • 网盘搜索
    • 影音播放
  • Nas杂项
    • 飞牛
    • 群晖
  • 电脑知识
  • 隐私政策
数码爱好者的分享小站
  1. 首页
  2. docker应用
  3. 正文

docker应用volumes的文件夹和永久数据挂载详解

2024年11月7日 348点热度 0人点赞 0条评论
version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
      - ./html:/usr/share/nginx/html
    depends_on:
      - db

  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: mydb
      MYSQL_USER: myuser
      MYSQL_PASSWORD: mypassword
    volumes:
      - dbdata:/var/lib/mysql
    ports:
      - "3306:3306"

volumes:
  dbdata:

有些新手同学又问到详细的docker应用映射文件详解,我这里再说一下

以上面的compose代码为例

容器和宿主机(nas)之间的数据交换有2种形式,分别是“绑定挂载”(Bind Mounts)和“卷”(Volumes)

 

1、绑定挂载 (Bind Mounts)定义:

绑定挂载将宿主机(nas)上的任意文件或目录挂载到容器内(部分nas没有给文件绑定挂载的权限)。这种方式允许你直接访问宿主机(nas)上的文件系统。

特点:

灵活性:可以直接指定宿主机(nas)上的任何文件或目录。

实时更新:宿主机(nas)上的文件更改会立即反映到容器中,反之亦然。

路径依赖:绑定挂载的路径必须在宿主机(nas)上存在,并且路径是固定的,更换宿主机时需要重新配置路径。

权限问题:需要确保宿主机(nas)和容器之间的文件权限匹配(这个是界面直接源代码部署docker应用时必须注意的)

举例,在web容器配置中:

volumes: 将宿主机(nas)的 ./html 目录绑定挂载到容器的 /usr/share/nginx/html 目录,这样可以在宿主机(nas)上编辑静态文件并实时看到效果。

    volumes:      - ./html:/usr/share/nginx/html

 

2、卷 (Volumes)定义:

卷是由 Docker 管理的数据存储空间,可以独立于容器的生命周期存在。卷可以被多个容器共享,并且可以被持久化保存,即使容器被删除,卷中的数据仍然保留。

特点:

数据持久化:即使容器被删除,卷中的数据仍然保留。

共享和重用:多个容器可以同时使用同一个卷。

更好的隔离性:卷只对 Docker 可见,对外界更加安全。

支持备份或恢复:可以方便地备份和恢复卷中的数据。

路径独立:卷的路径由 Docker 管理,不需要关心具体的宿主机(nas)路径。

举例,在db容器配置中:

volumes: 使用一个命名卷 dbdata 来持久化 MySQL 的数据

    volumes:      - dbdata:/var/lib/mysql

同时在最后volumes: 定义了一个命名卷 dbdata,用于持久化 MySQL 的数据

volumes:  dbdata:

 

区别总结

数据管理:

绑定挂载:数据管理由宿主机(nas)负责,路径固定,需要手动管理文件权限。

卷:数据管理由 Docker 负责,路径独立,Docker 自动处理文件权限。

持久化:

绑定挂载:数据持久化取决于宿主机(nas)上的文件系统,如果宿主机(nas)上的文件被删除,数据也会丢失。

卷:数据持久化由 Docker 管理,即使容器被删除,卷中的数据仍然保留。

灵活性:

绑定挂载:可以直接访问宿主机(nas)上的任意文件或目录,适合开发环境。

卷:更适合生产环境,因为卷提供了更好的隔离性和安全性。

迁移:

绑定挂载:迁移数据需要手动复制文件。

卷:可以使用 docker volume 命令轻松备份和恢复卷中的数据。

选择建议

开发环境:如果你需要频繁修改文件并且希望这些更改立即反映到容器中,绑定挂载是一个不错的选择。

生产环境:如果你需要数据持久化和更好的隔离性,建议使用卷。

 

 

 

 

 

 

 

相关文章

  • Nas上部署一款开箱即用的在线视频播放器docker应用:MoonTV
  • Nas上部署一款开源、轻量的在线视频搜索与观看docker应用:libretv
  • 告别U盘拷来拷去!只要几分钟就能拥有个人或企业专属「影音库」:mediacms
  • Nas上部署智能表格+工作流+应用搭建的一站式数字化平台:SeaTable最新5.3版本
  • Nas上docker部署一个动画数字人:Awesome Digital Human
  • Nas上docker部署web文件分享快递柜:FileCodeBox
  • nas上部署m3u8在线视频下载工具:mediago
  • 一款多平台的开源电子书阅读器:Anx-Reader
标签: 暂无
最后更新:2025年4月24日

红薯丸子

好好学习,天天向上

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2024 红薯丸子. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

简体中文简体中文
EnglishEnglish