6.运行mysql容器-理解容器数据卷

news2024/11/24 20:00:54

运行mysql容器-理解容器数据卷

  • 1.什么是容器数据卷
  • 2.如何使用容器数据卷
    • 2.1 数据卷挂载命令
    • 2.2 容器数据卷的继承
    • 2.3 数据卷的读写权限
    • 2.4 容器数据卷的小实验(加深理解)
      • 2.4.1 启动挂载数据卷的centos容器
      • 2.4.2 启动后,在宿主机的data目录下会出现一个test的目录
      • 2.4.3 在宿主机的test目录下,新建一个a.go的文件
      • 2.4.4 在docker容器内部的home目录下,可以看到同步出现了a.go
      • 2.4.5在docker容器内部的home目录下,新建一个b.go文件
      • 2.4.6在宿主机的data/test目录下,可以看到出现一个b.go文件
      • 2.4.7 在容器的home目录下删除b.go,可以看到宿主的test目录下,b.go文件也被同步删除了
      • 2.4.8 使用docker inspect 查询挂载的数据卷
    • 2.5 小结
  • 3. 容器运行MySQL实战
    • 3.1 安装前的思考
    • 3.2 制作MySQL的配置文件
    • 3.3 运行MySQL容器
    • 3.4 验证
      • 3.4.1 创建数据
    • 3.4.2 验证容器重启后,数据不会丢失
    • 3.4.3 验证删除后,重启运行数据不会丢失
      • 3.4.3.1 删除容器
      • 3.4.3.2 重新运行容器
      • 3.4.3.3 验证
    • 4.注意

1.什么是容器数据卷

将应用和环境打包成一个镜像,如果数据都在容器,一旦容器删除了,数据就会丢失了。要解决这个问题,就必须要进行数据的持久化
容器之间可以有一个数据共享的技术。Docker容器中产生的数据,同步到宿主机,这就是卷技术。目录的挂载,将我们容器内的目录,挂载到Linux上面!
所谓容器卷,就是容器的持久化和同步操作!容器间也是可以数据共享的!

2.如何使用容器数据卷

2.1 数据卷挂载命令

直接使用命令来挂载 -v

docker run -it --privileged=true -v 宿主机绝对路目录:/容器内目录 镜像名

这里我们看到加了一个privileged=true的参数,这是为了解决Docker挂载主机目录如果出现cannot open directory.:Permission denied
如果是centos7安全模块会比之前系统版本加强,不安全的会禁止,所以目录挂载的情况被默认为不安全的行为。在SELinux里面挂载目录被禁止掉了,如果要开启,我们一般使用–privileged=true命令,扩大容器的权限解决挂载目录没有权限的问题,也即使用该参数,container内的root拥有真正的root权限,否则,container内的root只是外部的一个普通用户权限。

2.2 容器数据卷的继承

这里所谓的继承,其实就是让一个容器使用另外一个容器的数据卷配置

docker run -it --privileged=true --volumes- from 父类容器 --name 新容器名称 镜像

2.3 数据卷的读写权限

这里所说的读写权限,指的是容器对数据卷的读写权限,千万别以为是宿主机!!!
默认可读可写rw

docker run -it --privileged=true -v 宿主机绝对路目录:/容器内目录:rw 镜像名

只读权限

docker run -it --privileged=true -v 宿主机绝对路目录:/容器内目录:ro 镜像名

2.4 容器数据卷的小实验(加深理解)

2.4.1 启动挂载数据卷的centos容器

docker run --name mycentos  -it -v /data/test:/home centos /bin/bash

在这里插入图片描述

2.4.2 启动后,在宿主机的data目录下会出现一个test的目录

在这里插入图片描述

2.4.3 在宿主机的test目录下,新建一个a.go的文件

在这里插入图片描述

2.4.4 在docker容器内部的home目录下,可以看到同步出现了a.go

在这里插入图片描述

2.4.5在docker容器内部的home目录下,新建一个b.go文件

在这里插入图片描述

2.4.6在宿主机的data/test目录下,可以看到出现一个b.go文件

在这里插入图片描述

2.4.7 在容器的home目录下删除b.go,可以看到宿主的test目录下,b.go文件也被同步删除了

rm -rf b.go

在这里插入图片描述
在这里插入图片描述

2.4.8 使用docker inspect 查询挂载的数据卷

docker inspect --format='{{.Mounts}}' mycentos

在这里插入图片描述

2.5 小结

通过上面的小实验我们看到,使用容器数据卷,我们只需要在本地修改即可,容器内会自动同步。

3. 容器运行MySQL实战

3.1 安装前的思考

  • 我们知道,容器如果不对数据做持久化(挂载数据卷),那么容器一旦重启或者删除,数据也就消失。所以我们要对MySQ数据做持久化,也就是挂载数据卷
  • 之前在物理机上安装过MySQL的小伙伴都知道,安装完成后,我们要修改基本的配置,主要是编码。而如果要在容器内修改,那么容器删除后,配置也就消失了,并且在容器内写配置,也不是很方便,所以我们这里要挂载数据卷,实现配置的共享(和宿主机)。

3.2 制作MySQL的配置文件

vim my.cnf

[mysql]
default-character-set = utf8mb4

[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init_connect=‘SET NAMES utf8mb4’

并把这个文件放到/data/mysql/conf下。
在这里插入图片描述

3.3 运行MySQL容器

docker run -d -p 3306:3306 --privileged=true -v /data/mysql/log:/var/log/msql -v /data/mysql/data:/var/lib/mysql -v /data/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root --name mysql5.7 mysql:5.7.44

在这里插入图片描述

3.4 验证

3.4.1 创建数据

在这里插入图片描述
在这里插入图片描述
上面我创建了一个mmp的数据库,并且也创建了表sys_user

3.4.2 验证容器重启后,数据不会丢失

下面我重启这个容器,看容器会不会丢失。

docker restart mysql5.7

在这里插入图片描述
验证配置是否丢失
在这里插入图片描述
我们看到,这还是之前容器的配置,没有改变。
验证数据是否丢失
在这里插入图片描述
数据也没有丢失。
所以挂载容器数据卷后,容器重启后,数据不会丢失,配置也不会消失。

3.4.3 验证删除后,重启运行数据不会丢失

3.4.3.1 删除容器

docker rm -f mysql5.7

在这里插入图片描述

3.4.3.2 重新运行容器

docker run -d -p 3306:3306 --privileged=true -v /data/mysql/log:/var/log/msql -v /data/mysql/data:/var/lib/mysql -v /data/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=root --name mysql5.7 mysql:5.7.44

3.4.3.3 验证

验证配置是否丢失
在这里插入图片描述
我们看到,这还是之前容器的配置,没有改变。
验证数据是否丢失
在这里插入图片描述
数据也没有丢失。
所以挂载容器数据卷后,容器重启后,数据不会丢失,配置也不会消失。

4.注意

注意,这里运行的MySQL容器仅供自己学习使用,不能用于生产,因为配置太简单,并且也没有做基本的主从复制。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1217652.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

reids管道

如何优化频繁命令往返造成的性能瓶颈? 如果同时需要执行大量的命令,那么就要等待上一条命令应答后再执行,这中间不仅仅多了RTT(Round Time Trip),而且还频繁调用系统IO,发送网络请求&#xff0c…

SSM项目初始化流程与操作概念解释-SpringBoot简化版

文章目录 1.引入概念2.导入依赖3.项目配置4.依照SpringMVC框架构建项目 1.引入概念 例如某一个XX系统,该系统存在前台页面(给用户直观看或使用),和后台页面(给管理人员调整数据和权限)。 这二个页面都通过…

QT自定义信号,信号emit,信号参数注册

qt如何自定义信号 使用signals声明返回值是void在需要发送信号的地方使用 emit 信号名字(参数)进行发送 在需要链接的地方使用connect进行链接 ct进行链接

pytorch.nn.Conv1d详解

通读了从论文中找的代码,终于找到这个痛点了! 以下详解nn.Conv1d方法 1 参数说明 in_channels(int) – 输入信号的通道。 out_channels(int) – 卷积产生的通道。 kernel_size(int or tuple) - 卷积核的尺寸,经测试后卷积核的大小应为in_cha…

阅读记录【PMLR2023】The Aggregation–Heterogeneity Trade-off in Federated Learning

The Aggregation–Heterogeneity Trade-off in Federated Learning Abstract 机器学习的传统观点认为,训练模型的数据越多,模型的性能就越好。因此,人们开发了多种联邦学习方法来聚合尽可能多的本地样本。与这种观点相反,本文表…

字母不重复的子串-第15届蓝桥第二次STEMA测评Scratch真题精选

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第158讲。 第15届蓝桥第2次STEMA测评已于2023年10月29日落下帷幕,编程题一共有6题,分别如下&am…

2023年【化工自动化控制仪表】找解析及化工自动化控制仪表试题及解析

题库来源:安全生产模拟考试一点通公众号小程序 化工自动化控制仪表找解析参考答案及化工自动化控制仪表考试试题解析是安全生产模拟考试一点通题库老师及化工自动化控制仪表操作证已考过的学员汇总,相对有效帮助化工自动化控制仪表试题及解析学员顺利通…

openGauss学习笔记-125 openGauss 数据库管理-设置账本数据库-校验账本数据一致性

文章目录 openGauss学习笔记-125 openGauss 数据库管理-设置账本数据库-校验账本数据一致性125.1 前提条件125.2 背景信息125.3 操作步骤 openGauss学习笔记-125 openGauss 数据库管理-设置账本数据库-校验账本数据一致性 125.1 前提条件 数据库正常运行,并且对防…

【网络基础实战之路】基于不同协议间使用重发布路由策略

系列文章传送门: 【网络基础实战之路】设计网络划分的实战详解 【网络基础实战之路】一文弄懂TCP的三次握手与四次断开 【网络基础实战之路】基于MGRE多点协议的实战详解 【网络基础实战之路】基于OSPF协议建立两个MGRE网络的实验详解 【网络基础实战之路】基于…

威胜WFET2000s电能量数据采集终端-WF102协议报文解读

客户又追加需求了 要求把电表接入他们自己的管理系统 小头菜查找相关资料,发现威胜2000s采集终端功能挺多,但是售价比普通透传DTU贵了 N 倍。 迫于成本压力,小头菜和厂里负责管理系统的领导沟通,看能不能用普通DTU代替。 后来发现…

ACM练习——第四天

ok,今天又是三节课的一天。 刚刚吃完饭的我一刻也不敢耽误,直接开干!!! 这些题和力扣上的,为了练习数据结构的题是不一样的。 直接上嘴脸 题目 第一次放学 (nowcoder.com)来自牛客网 思路 先看他的输入…

JavaScript 语句、标识符、变量

语句 JavaScript程序的单位是行(line),也就是一行一行地执行。一般情况下,每一行就是一个语句 var num 10; 语句以分号结尾,一个分号就表示一个语句结束。 标识符 标识符(identifier)指的是用来识别各种值的合法名称。最常见的标识符就是变量名标识符…

qt定时器的使用

在QWidget中进行声明

V10服务器安装virt-manage

kvm是什么 KVM(Kernel-based Virtual Machine, 即内核级虚拟机) 是一个开源的系统虚拟化模块。它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。目前KVM已成为学术界的主流VMM之一,它包含一个为处理器提供底层虚拟化 可加载…

【Linux网络】典型NAS存储方式:NFS网络共享存储服务

一、关于存储的分类 二、NFS的介绍 nfs的相关介绍: 1、原理 2、nfs的特点 3、nfs软件学习 4、共享配置文件的书写格式 关于权限,学习: 5、关于命令的学习: 三、实验操作 1、nfs默认共享权限(服务端设置&#…

短视频账号矩阵系统源码/技术源码分享/技术搭建架构

短视频账号矩阵系统----技术源码分享/技术搭建架构 抖音seo又叫抖音搜索引擎,只要能做到布词,和过去的百度seo优化一样,布词,布关键词,当搜索栏搜索时可以搜索到该短视频。优化视频关键词,做好关键词的优化…

VSCode任务tasks.json中的问题匹配器problemMatcher和ProblemPattern的severity属性关系

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 一、引言 在 VS Code 中,tasks.json 文件中的 problemMatcher 字段用于定义如何解析任务输出中的问题(错误、警告等)。 ProblemMatcher的JSON对象和其下的子对象pattern…

Android 13.0 recovery出厂时清理中字体大小的修改

1.前言 在13.0的系统rom定制化开发中,在recovery模块也是系统中比较重要的模块,比如恢复出厂设置,recovery ota升级, 清理缓存等等,在一些1080p的设备,但是density只是240这样的设备,会在恢复出厂设置的时候,显示的字体有点小, 产品要求需要将正在清理的字体调大点,这…

【解刊】现投录用快!无版面费!CCF-B,2个月录用,2天见刊!

计算机类 • 好刊解读 今天小编带来Elsevier旗下计算机领域好刊的解读,如有相关领域作者有意向投稿,可作为重点关注!后文有真实发表案例,供您投稿参考~ 01 期刊简介 Computers & Security ☑️出版社:Elsevier …

JUNIT使用和注意、以及断言的介绍使用、SpringBoot Test测试类的使用、maven配置使用junit详细介绍

参考文章: https://www.cnblogs.com/zhukaile/p/14514238.html,https://blog.csdn.net/qq_36448800/article/details/126438339 一、什么是单元测试 在平时的开发当中,一个项目往往包含了大量的方法,可能有成千上万个。如何去保…