当前位置: 首页 > news >正文

docker (五)-docker存储-数据持久化

将数据存储在容器中,一旦容器被删除,数据也会被删除。同时也会使容器变得越来越大,不方便恢复和迁移。
将数据存储到容器之外,这样删除容器也不会丢失数据。一旦容器故障,我们可以重新创建一个容器,将数据挂载到容器里,就可以快速的恢复。

存储方式

image.png

  • volume 卷
    卷存储在主机文件系统分配一块专有存储区域,由 Docker(在 Linux 上)管理,并且与主机的核心功能隔离。非 Docker 进程不能修改文件系统的这一部分。卷是在 Docker 中持久保存数据的最佳方式。
  • bind mount 绑定挂载
    绑定挂载可以将主机文件系统上目录或文件装载到容器中,但是主机上的非 Docker 进程可以修改它们,同时在容器中也可以更改主机文件系统,包括创建、修改或删除文件或目录,使用不当,可能会带来安全隐患。
  • tmpfs 临时挂载
    tmpfs挂载仅存储在主机系统的内存中,从不写入主机系统的文件系统。当容器停止时,数据将被删除。

 绑定挂载(bind mount)

绑定挂载适用以下场景:

  • 将配置文件从主机共享到容器。
  • 在 Docker 主机上的开发环境和容器之间共享源代码或编译目录。
    例如,可以将 Maven 的target/目录挂载到容器中,每次在主机上用 Maven打包项目时,容器内都可以使用新编译的程序包。

-V

绑定挂载将主机上的目录或者文件装载到容器中。绑定挂载会覆盖容器中的目录或文件。

如果宿主机目录不存在,docker会自动创建这个目录。但是docker只自动创建文件夹,不会创建文件。

例如,mysql的配置文件和数据存储目录使用主机的目录。可以将配置文件设置为只读(read-only)防止容器更改主机中的文件。

docker run -e MYSQL_ROOT_PASSWORD=123456 \-v /home/mysql/mysql.cnf:/etc/mysql/conf.d/mysql.cnf:ro  \-v /home/mysql/data:/var/lib/mysql  \-d mysql:5.7 

--tmpfs 临时挂载 

docker run -d -it --tmpfs /tmp nginx:1.22-alpine

volume 卷 

卷是docker 容器存储数据的首选方式,卷有以下优势:

  • 卷可以在多个正在运行的容器之间共享数据。仅当显式删除卷时,才会删除卷。
  • 当你想要将容器数据存储在外部网络存储上或云提供商上,而不是本地时。
  • 卷更容易备份或迁移,当您需要备份、还原数据或将数据从一个 Docker 主机迁移到另一个 Docker 主机时,卷是更好的选择。

创建和挂载卷

docker volume create my-datadocker run -e MYSQL_ROOT_PASSWORD=123456 \-v /home/mysql/conf.d/my.cnf:/etc/mysql/conf.d/my.cnf:ro  \-v my-data:/var/lib/mysql  \-d mysql:5.7 

创建nfs卷

docker volume create --driver local \--opt type=nfs \--opt o=addr=192.168.10.1,rw \--opt device=:/path/to/dir \vol-nfs

 

http://www.lryc.cn/news/301048.html

相关文章:

  • 飞行路线(分层图+dijstra+堆优化)(加上题目选数复习)
  • 云计算基础-快照与克隆
  • 使用 RAG 创建 LLM 应用程序
  • 第13章 网络 Page744~746 asio核心类 ip::tcp::endPoint
  • 面试浏览器框架八股文十问十答第一期
  • 多线程的基本原理学习
  • C/C++进制转换
  • 使用 Coze 搭建 TiDB 助手
  • Arduino程序简单入门
  • QT+OSG/osgEarth编译之八十三:osgdb_ogr+Qt编译(一套代码、一套框架,跨平台编译,版本:OSG-3.6.5插件库osgdb_ogr)
  • 开年炸裂-Sora/Gemini
  • vue前端系统启动报错Module not found: Error: Can‘t resolve ‘sass-loader‘
  • HTML | DOM | 网页前端 | 常见HTML标签总结
  • 乡政府|乡政府管理系统|基于Springboot的乡政府管理系统设计与实现(源码+数据库+文档)
  • 存储系统如何规避数据静默错误SDC?
  • 《Linux 简易速速上手小册》第8章: 安全性与加固(2024 最新版)
  • Ubuntu Desktop 显示文件路径
  • 【Java程序设计】【C00270】基于Springboot的moba类游戏攻略分享平台(有论文)
  • 【旧文更新】【优秀毕设】人脸识别打卡/签到/考勤管理系统(OpenCV+最简基本库开发、可移植树莓派 扩展网络图像推流控制 验证码及Excel邮件发送等功能)
  • 模型 4i(趣味、利益、互动、个性)理论
  • 解线性方程组(二)——Jacobi迭代法求解(C++)
  • 信息安全技术基础知识
  • 使用Taro开发鸿蒙原生应用——快速上手,鸿蒙应用开发指南
  • C语言指针(初阶)
  • Python循环语句——for循环的嵌套使用
  • Java创建线程真的有三种方式吗?
  • 17-k8s控制器资源-job控制
  • lazarus:LCL 嵌入 fpwebview 组件,做一个简单浏览器
  • c++类和对象新手保姆级上手教学(上)
  • 可变参数(c/c++)