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

docker笔记5-数据卷

docker笔记5-数据卷

  • 一、数据卷
    • 1.1 定义
    • 1.2 本质
    • 1.3 特点
  • 二、使用数据卷
  • 三、案例
    • 2.1 安装Mysql
  • 四、匿名挂载和具名挂载
    • 4.1 匿名挂载
    • 4.2 具名挂载
  • 五、三种挂载方式


一、数据卷

1.1 定义

Docker 容器数据卷是一个可用于存储数据的特殊目录,存在于一个或多个容器的指定位置。这些数据卷可以绕过容器的文件系统,提供持久化的数据存储,以便多个容器之间容器与宿主机之间共享数据。

1.2 本质

实现数据的可持久化
在这里插入图片描述

1.3 特点

  • 持久性: 数据卷的内容在容器重启后仍然存在。
  • 共享性: 可以轻松地在多个容器之间共享数据。
  • 独立于容器生命周期: 数据卷的生命周期独立于容器,即使容器被删除,数据卷也可以保留。

二、使用数据卷

方式一:使用命令挂载 -v

# 端口映射
docker run -it -p 主机端口:容器内端口
# 目录映射
docker run -it -v 主机目录:容器内目录

执行以下命令,实现主机目录:/home/ceshi与容器目录/home的映射,这样这两个目录的所有操作都会同步,即使容器已经停止运行。

docker run -it -v /home/ceshi:/home centos /bin/bash

可以通过以下命令查看容器目录是否挂载成功:

docker inspect 容器Id

以下内容说明挂载成功:

"Mounts": [{"Type": "bind","Source": "/home/mysql/conf","Destination": "/etc/mysql/conf.d","Mode": "","RW": true,"Propagation": "rprivate"},{"Type": "bind","Source": "/home/mysql/data","Destination": "/var/lib/mysql","Mode": "","RW": true,"Propagation": "rprivate"}],

扩展:

#通过 -v 容器内路径:ro或者rw 改变读写权限
ro:readonly   #只读
rw: read write #可读可写一旦这个设施了容器权限,容器对我们挂载出来的内容就有限定了
[root@lisa volumes]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
[root@lisa volumes]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx# ro 只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法操作!

三、案例

2.1 安装Mysql

目的:实现mysql中数据的持久化
首先,下载mysql镜像

docker pull mysql

需要配置mysql密码:

 参考官网hub 
docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d 

启动mysql容器,设置数据卷挂载并配置mysql密码

docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7

可以使用数据库连接工具连接启动的mysql容器:
在这里插入图片描述下面是连接成功:
在这里插入图片描述

四、匿名挂载和具名挂载

4.1 匿名挂载

不指定挂载到主机上的路径,只指定容器内部需要挂载的目录。

docker run -d -P --name nginx01 -v /etc/nginx nginx

查看所有数据卷情况

docker volume ls

在这里插入图片描述

4.2 具名挂载

给挂载位置添加名字,即具名挂载。

docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
注意:这里 -v juming-nginx:  代表直接给定名字,但是没有指定路径,如果在juming-nginx前面你添加/,则代表指定路径

在这里插入图片描述

查看数据卷配置信息

docker volume inspect 数据卷id

在这里插入图片描述所有容器内的卷,在没有指定目录的情况下都是挂载在:/var/lib/docker/volumes/xxxx/_data 目录下。

五、三种挂载方式

挂载方式描述
匿名挂载-v 容器内部路径
具名挂载-v 卷名:容器内部路径
指定路径挂载-v /宿主机路径:容器内部路径

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • vue2根据选中的日期动态渲染表格的列
  • 计算机视觉技术在医疗诊断中的应用如何确保数据隐私和安全性,同时又能实现精准的病情分析?
  • 详解Pku2352 数星星Stars以及star加强版
  • 从匿名内部类到Lambda再到方法引用
  • 53、PHP 实现归并排序
  • git学习准备阶段
  • 构建铁塔基站安全防护网:视频AI智能监控技术引领智慧化转型
  • java~IO流
  • OnlyOffice在线部署
  • C++箭头运算符->
  • 在线短剧APP开发,短剧市场的新赛道新盈利
  • 基于springboot+vue+uniapp的校园快递平台小程序
  • 程序员修炼之路:深入广泛的必修课程
  • 智慧景区导览系统小程序开发
  • Mac设置公钥
  • es6要点
  • EventListener原理
  • leetcode378. Kth Smallest Element in a Sorted Matrix
  • mysql常用命令汇总
  • python 装饰器(一)
  • Terraform入门 - 1. 安装Terraform
  • vue的全局变量和全局拦截请求器
  • Vue小说阅读器(仿追书神器)
  • 程序员最讨厌的9句话,你可有补充?
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 基于Javascript, Springboot的管理系统报表查询页面代码设计
  • 人脸识别最新开发经验demo
  • 首页查询功能的一次实现过程
  • 一加3T解锁OEM、刷入TWRP、第三方ROM以及ROOT
  • 最近的计划
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • ​​​​​​​STM32通过SPI硬件读写W25Q64
  • ​【已解决】npm install​卡主不动的情况
  • ​浅谈 Linux 中的 core dump 分析方法
  • ​直流电和交流电有什么区别为什么这个时候又要变成直流电呢?交流转换到直流(整流器)直流变交流(逆变器)​
  • #Datawhale AI夏令营第4期#多模态大模型复盘
  • #DBA杂记1
  • #我与Java虚拟机的故事#连载15:完整阅读的第一本技术书籍
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (定时器/计数器)中断系统(详解与使用)
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (转)程序员疫苗:代码注入
  • (转)真正的中国天气api接口xml,json(求加精) ...
  • ./和../以及/和~之间的区别
  • .Family_物联网
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .net core使用ef 6
  • .NET 使用 XPath 来读写 XML 文件
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地定义和使用弱事件
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .Net多线程总结
  • /bin/rm: 参数列表过长"的解决办法
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法