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

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.dtcms.com/a/370354.html

相关文章:

  • 《漫威争锋》S1下半赛季将至 石头人主题制服同步上线
  • 【C++】string类--构造、拷贝、赋值及其模拟实现
  • 百度前端社招面经二
  • More Effective C++ 条款32:在未来时态下发展程序
  • 表格识别技术:通过计算机视觉和OCR,实现非结构化表格向结构化数据的转换,推动数字化转型。
  • 计算机网络:以太网中的数据传输
  • Lua和C#比较
  • Android开发——初步了解AndroidManifest.xml
  • STM32CubeProgrammer软件安装
  • Rust 元组
  • Flink-新增 Kafka source 引发状态丢失导致启动失败
  • 消失的6个月!
  • 《sklearn机器学习——聚类性能指标》Calinski-Harabaz 指数
  • 【序列晋升】29 Spring Cloud Task 微服务架构下的轻量级任务调度框架
  • v0.29.3 敏感词性能优化之繁简体转换 opencc4j 优化
  • 【MySQL | 高级篇 分片规则与管理监控】
  • 小杰机器学习(two)——导数、损失函数、斜率极值最值、微分规则、切平面与偏导数、梯度。
  • MATLAB R2025a安装配置及使用教程(超详细保姆级教程)
  • Linux/UNIX系统编程手册笔记:POSIX
  • 8.FC平台模块梳理
  • 对接gemini-2.5-flash-image-preview教程
  • ModelScope概述与实战
  • 【Bluedroid】A2dp Source播放流程源码分析(7):蓝牙音频流启动流程深度解析(btif_av_stream_start)
  • Docker 本地开发环境搭建(MySQL5.7 + Redis7 + Nginx + 达梦8)- Windows11 版 2.0
  • phpMyAdmin文件包含漏洞复现:原理详解+环境搭建+渗透实战(windows CVE-2014-8959)
  • MathJax - LaTeX:WordPress 公式精准呈现方案
  • 深入剖析Spring Boot自动配置原理
  • 用Android studio运行海外极光推送engagelab安卓的SDK打apk安装包
  • 记录一下k佬 lvgl micropython的sdcard初始化问题
  • Nmap使用手册