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

【中间件】docker数据卷

       📝个人主页:五敷有你      

 🔥系列专栏:中间件

⛺️稳中求进,晒太阳

1.数据卷(容器数据管理)

修改nginx的html页面时,需要进入nginx内部。并且因为内部没有编辑器,修改文件也很麻烦。

这就是因为容器与数据(容器内文件)耦合带来的后果。要解决这个问题,必须将数据与容器解耦,这就要用到数据卷了。

1.1.什么是数据卷

数据卷(volume)是一个虚拟目录,指向宿主机文件系统中的某个目录。

一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。

这样,我们操作宿主机的/var/lib/docker/volumes/html目录,就等于操作容器内的/usr/share/nginx/html目录了

1.2.数据集操作命令

数据卷操作的基本语法如下:

docker volume [COMMAND]

docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:

  • create 创建一个volume

  • inspect 显示一个或多个volume的信息

  • ls 列出所有的volume

  • prune 删除未使用的volume

  • rm 删除一个或多个指定的volume

1.3.创建和查看数据卷

需求:创建一个数据卷,并查看数据卷在宿主机的目录位置

① 创建数据卷

docker volume create html

② 查看所有数据

docker volume ls

结果:

③ 查看数据卷详细信息卷

docker volume inspect html

结果:

可以看到,我们创建的html这个数据卷关联的宿主机目录为/var/lib/docker/volumes/html/_data目录。

小结

数据卷的作用:

  • 将容器与数据分离,解耦合,方便操作容器内数据,保证数据安全

数据卷操作:

  • docker volume create:创建数据卷

  • docker volume ls:查看所有数据卷

  • docker volume inspect:查看数据卷详细信息,包括关联的宿主机目录位置

  • docker volume rm:删除指定数据卷

  • docker volume prune:删除所有未使用的数据卷

1.4.挂载数据卷

我们在创建容器时,可以通过 -v 参数来挂载一个数据卷到某个容器内目录,命令格式如下:

docker run \--name mn \-v html:/root/html \-p 8080:80nginx \

这里的-v就是挂载数据卷的命令:

  • -v html:/root/htm :把html数据卷挂载到容器内的/root/html这个目录中

1.5.案例-给nginx挂载数据卷

需求:创建一个nginx容器,修改容器内的html目录内的index.html内容

分析:上个案例中,我们进入nginx容器内部,已经知道nginx的html目录所在位置/usr/share/nginx/html ,我们需要把这个目录挂载到html这个数据卷上,方便操作其中的内容。

提示:运行容器时使用 -v 参数挂载数据卷

步骤:

① 创建容器并挂载数据卷到容器内的HTML目录

docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx

② 进入html数据卷所在位置,并修改HTML内容

# 查看html数据卷的位置
docker volume inspect html
# 进入该目录
cd /var/lib/docker/volumes/html/_data
# 修改文件
vi index.html

1.6.案例-给MySQL挂载本地目录

容器不仅仅可以挂载数据卷,也可以直接挂载到宿主机目录上。关联关系如下:

  • 带数据卷模式:宿主机目录 --> 数据卷 ---> 容器内目录

  • 直接挂载模式:宿主机目录 ---> 容器内目录

如图:

语法

目录挂载与数据卷挂载的语法是类似的:

  • -v [宿主机目录]:[容器内目录]

  • -v [宿主机文件]:[容器内文件]

需求:创建并运行一个MySQL容器,将宿主机目录直接挂载到容器

实现思路如下:

1)在将课前资料中的mysql.tar文件上传到虚拟机,通过load命令加载为镜像

2)创建目录/tmp/mysql/data

3)创建目录/tmp/mysql/conf,将课前资料提供的hmy.cnf文件上传到/tmp/mysql/conf

4)去DockerHub查阅资料,创建并运行MySQL容器,要求:

① 挂载/tmp/mysql/data到mysql容器内数据存储目录

② 挂载/tmp/mysql/conf/hmy.cnf到mysql容器的配置文件

③ 设置MySQL密码

1.7.小结

docker run的命令中通过 -v 参数挂载文件或目录到容器中:

  • -v volume名称:容器内目录

  • -v 宿主机文件:容器内文

  • -v 宿主机目录:容器内目录

数据卷挂载与目录直接挂载的

  • 数据卷挂载耦合度低,由docker来管理目录,但是目录较深,不好找

  • 目录挂载耦合度高,需要我们自己管理目录,不过目录容易寻找查看

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

相关文章:

  • 【3D reconstruction 学习笔记 第二部】
  • 【CSP试题回顾】202109-1-数组推导(优化)
  • Redis - 高并发场景下的Redis最佳实践_翻过6座大山
  • 数字乡村发展策略:科技引领农村实现跨越式发展
  • TCP重传机制详解——04FACK
  • 安卓Java面试题 206- 210
  • huggingface的transformers训练bert
  • 计算机三级——网络技术(综合题第五题)
  • C#使用ASP.NET Core Razor Pages构建网站(三)
  • R语言迅速计算多基因评分(PRS)
  • 蓝桥杯刷题_day3
  • Dubbo源码解析-Provider服务暴露Export源码解析
  • 在微信小程序中或UniApp中自定义tabbar实现毛玻璃高斯模糊效果
  • 【JavaScript】JavaScript 程序流程控制 ⑥ ( while 循环概念 | while 循环语法结构 )
  • Keil笔记(缘更)
  • 举4例说明Python如何使用正则表达式分割字符串
  • Java 中的 Math. round(-1. 5) 等于多少?
  • MFC界面美化第三篇----自绘按钮(重绘按钮)
  • 设计模式|工厂模式
  • CHAT~(持续更新)
  • linux系统------------Mysql数据库介绍、编译安装
  • 文件操作3
  • 算法D57 | 动态规划17 | 647. 回文子串 516.最长回文子序列 动态规划总结篇
  • go的限流
  • 补充--广义表学习
  • 【笔记】KaiOS SPN显示逻辑
  • Visual Basic6.0零基础教学(4)—编码基础,数据类型与变量
  • VPCFormer:一个基于transformer的多视角指静脉识别模型和一个新基准
  • Android 图形渲染和显示系统关系
  • 3.C++:类与对象(下)