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

Docker-volume数据卷

在 linux 系统上,docker 将images, containers, volumes等相关的数据存储在/var/lib/docker下。

volume它的主要作用是容器和宿主机之间可以通信,方便备份恢复。

通过 Volume,可以将容器中的数据持久化到宿主机,确保数据不会因容器的删除而丢失。此外,还有bind mount(可以存储在主机系统的任何位置。它们甚至可能是重要的系统文件或目录。Docker 主机或 Docker 容器上的非 Docker 进程可以随时修改它们。)和tmpfs mount(挂载仅存储在主机系统的内存中,永远不会写入主机系统的文件系统)

概念描述区别
数据卷(Volume)用于持久化容器数据的工具数据卷可以跨容器共享,数据持久化到宿主机。
绑定挂载(Bind Mount)将宿主机的文件或目录挂载到容器中绑定挂载依赖于宿主机的文件系统,路径必须存在。
临时文件系统(tmpfs)将数据存储在内存中临时文件系统中的数据不会持久化,容器删除后数据丢失。

常用命令:

docker volume ls 查看有哪些数据卷

docker volume create 卷名 创建卷

docker volume inspect 卷名 查看卷的详细信息

docker volume rm 卷名 删除卷

docker启动容器时使用-v /--mount指定要挂载的卷:如果该卷不存在,docker 自动创建

挂载类型对比; --mount 就需要提前创建

参数形式示例特点
-v 短格式-v myvol:/app/data简洁,自动创建卷
–mount 长格式–mount type=volume,source=myvol,target=/app/data更精确的控制选项
推荐:生产环境优先使用 --mount,支持更多配置选项(如只读挂载)

两种挂载语法:

docker run -d \--name devtest \-v myvol2:/app \nginx:latestdocker run -d \--name devtest \--mount source=myvol2,target=/app \      # source宿主机  target容器nginx:latest
  • 挂载只读卷:

docker run -d \ --name=nginx-1 \ --mount source=nginx-vol,target=/usr/share/nginx/html,readonly \ nginx:latest

  • 挂载子目录:子目录卷需要提前在卷logs中创建好,不然会挂载失败

cd /var/lib/docker/volumes/logs/_data mkdir app1

docker run -d \ --name=nginx-2 \ --mount source=logs,target=/var/log/app1,volume-subpath=app1 \ # 语法要求:三个逗号之间不能有空格 nginx:latest

  • 在两台docker宿主机上创建支持nfs功能的卷 nfs-web-1

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

1、首先准备一台NFS服务器(详见NFS服务搭建过程)

搭建过程大致类似,只有一处需要注意 :

/docker/web/html 192.168.237.0/24(ro,sync,all_squash)

如果这里只给了它只读的权限,就要给这个/docker/web 777的权限

2、在两台docker上,一台Ubuntu,一台rocky 都安装客户端,这样才能识别挂载的文件

Ubuntu:apt install -y nfs-common

rocky:yum install nfs-utils -y

3、创建支持NFS功能的卷(两台docker上都操作一遍)

docker volume create \ --driver local \ --opt type=nfs \ --opt o=addr=192.168.237.179,nolock,soft,ro,sync \ --opt device=:/docker/web nfs-web-1

4、在两台宿主机上启动容器时使用该卷

docker run -d --name nginx-4 -p 5588:80 -v nfs-web-1:/usr/share/nginx/html nginx

5、访问验证

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

思考:

正常停止容器,容器里的数据会丢失吗?

如何将容器里的数据保存到宿主机?

如何在容器和宿主机之间传输数据? docker cp

修改了容器对应的配置文件如何让配置文件生效?

http://www.xdnf.cn/news/20247.html

相关文章:

  • 为什么固态硬盘断电后数据还能保存不丢失?
  • 【LeetCode热题100道笔记】二叉树展开为链表
  • 激光频率梳 3D 轮廓测量 - 油路板的凹槽深度和平面度测量
  • Spring核心-Bean周期
  • ElmentUI之DateTimePicker 日期时间选择器
  • 避免使用非const全局变量:C++中的最佳实践 (C++ Core Guidelines)
  • SQLSERVER数据备份
  • Java8 Comparator接口 和 List Steam 排序使用案例
  • 人工智能在医学图像中的应用:从机器学习到深度学习
  • 技术方案详解:如何安全移动已安装软件?
  • C语言精讲(视频教程)
  • 打包 Uniapp
  • Redisson分布式锁:看门狗机制与续期原理
  • nginx安装部署(备忘)
  • ecplise配置maven插件
  • 【知识点讲解】稀疏注意力与LSH技术:从基础到前沿的完整指南
  • MHA高可用架构
  • 多线程(六) ~ 定时器与锁
  • 驱动开发系列71 - GLSL编译器实现 - 指令选择
  • python 逻辑运算练习题
  • HttpClient、OkHttp 和 WebClient
  • 贪心算法应用:交易费优化问题详解
  • OpenLayers常用控件 -- 章节七:测量工具控件教程
  • 《sklearn机器学习——聚类性能指标》Fowlkes-Mallows 得分
  • Java学习笔记二(类)
  • 【3D图像算法技术】如何在Blender中对复杂物体进行有效减面?
  • 【EXPLAIN详解:MySQL查询优化师的显微镜】
  • MacOS 使用 luarocks+wrk+luajit
  • Docker 本地开发环境搭建(MySQL5.7 + Redis7 + Nginx + 达梦8)- Windows11 版 2.0
  • Mac Intel 芯片 Docker 一键部署 Neo4j 最新版本教程