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

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

运行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容器仅供自己学习使用,不能用于生产,因为配置太简单,并且也没有做基本的主从复制。

相关文章:

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

运行mysql容器-理解容器数据卷 1.什么是容器数据卷2.如何使用容器数据卷2.1 数据卷挂载命令2.2 容器数据卷的继承2.3 数据卷的读写权限2.4 容器数据卷的小实验(加深理解)2.4.1 启动挂载数据卷的centos容器2.4.2 启动后,在宿主机的data目录下会…...

golang学习笔记——查找质数

查找质数 编写一个程序来查找小于 20 的所有质数。 质数是大于 1 的任意数字,只能被它自己和 1 整除。 “整除”表示经过除法运算后没有余数。 与大多数编程语言一样,Go 还提供了一种方法来检查除法运算是否产生余数。 我们可以使用模数 %(百…...

C++ 基础二

文章目录 四、流程控制语句4.1 选择结构4.1.1 if语句 4.1.2 三目运算符4.1.3 switch语句注意事项 4.1.4 if和switch的区别【CHAT】4.2 循环结构4.2.1 while循环语句4.2.2 do...while循环语句 4.2.3 for循环语句九九乘法表 4.3 跳转语句4.3.1 break语句4.3.2 continue语句4.3.3 …...

鼎盛合 | 宠物智能投食机方案设计开发

养宠物是一件治愈并解压的事情,与动物的相处中能够释放压力,并在与宠物的互动中小可爱们往往能带给你一种治愈的力量,所以养宠物成为了人们尤为热衷的事情。我们生活中随处可见主人与宠物相处的温馨画面,但养宠物也有些问题在困扰…...

ERR_PNPM_INVALID_WORKSPACE_CONFIGURATION packages field missing or empty

vue执行 pnpm install命令时,报 ERR_PNPM_INVALID_WORKSPACE_CONFIGURATION  packages field missing or empty错,在网上查询了很久,也没有传出来结果,最后发现是pnpm的版本不对引起的。 我先执行的是npm install -g pnpm&…...

ubuntu 23.04从源码编译安装rocm运行tensorflow-rocm

因为ubuntu22.04的RDP不支持声音转发,所以下载了ubuntu23.04.但官方的rocm二进制包最高只支持ubuntu22.04,不支持ubuntu 23.04,只能自己从源码编译虽然有网友告诉我可以用docker运行rocm。但是我已经研究了好几天,沉没成本太多&am…...

echarts 图表文字大小自适应 字体大小自适应

将文字大小自适应方法挂载到全局 //main.js Vue.prototype.fontSize function(res) {// 获取视口宽度const clientWidth window.innerWidth ||document.documentElement.clientWidth ||document.body.clientWidth;if (!clientWidth) return; // 如果获取不到视口宽度&#xf…...

【项目】云备份系统基础功能实现

目录 一.项目介绍1.云备份认识2.服务端程序负责功能与功能模块划分3.客户端程序负责功能与功能模块划分4.开发环境 二.环境搭建1.gcc升级7.3版本2.安装jsoncpp库3.下载bundle数据压缩库4.下载httplib库 三.第三方库认识1.json(1)json认识(2)jsoncpp认识(3)json实现序列化(4)jso…...

【Shell脚本13】Shell 文件包含

Shell 文件包含 和其他语言一样,Shell 也可以包含外部脚本。这样可以很方便的封装一些公用的代码作为一个独立的文件。 Shell 文件包含的语法格式如下: . filename # 注意点号(.)和文件名中间有一空格或source filename实例 创建两个 shell 脚本文件…...

2023.11.15 关于 Spring Boot 配置文件

目录 引言 Spring Boot 配置文件 properties 配置文件说明 基本语法 读取配置文件 优点 缺点 yml 配置文件说明 基本语法 读取配置文件 yml 配置不同数据数据类型及 null 字符串 加单双引号的区别 yml 配置 列表(List) 和 映射(…...

2023年第九届数维杯国际大学生数学建模挑战赛A题

2023年第九届数维杯国际大学生数学建模挑战赛正在火热进行,小云学长又在第一时间给大家带来最全最完整的思路代码解析!!! A题思路解析如下: 完整版解题过程及代码,稍后继续给大家分享~ 更多题目完整解析点…...

IDEA写mybatis程序,java.io.IOException:Could not find resource mybatis-config.xml

找不到mybatis-config.xml 尝试maven idea:module&#xff0c;不是模块构造问题 尝试检验pom.xml&#xff0c;在编译模块添加了解析resources内容依旧不行 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.or…...

1软件管理

2.1软件管理 一、Linux软件包管理机制 红帽系操作系统软件管理分类 yum rpm source bin 二、Rpm工具管理RPM软件包 1、认识RPM软件包 rpm软件包名称 软件名称 版本号(主版本、次版本、修订号) 操作系统 cpu平台 操作系统:el6 el5 fedora suse debin ubuntu cpu平台:i386 …...

flutter 绘制右上角圆角三角形标签

绘制&#xff1a; import package:jade/utils/JadeColors.dart; import package:flutter/material.dart; import dart:math as math;class LabelTopRightYellow extends StatefulWidget {final String labelTitle; // 只能两个字的&#xff08;文字偏移量没有根据文字长度改变…...

C/C++输出整数部分 2021年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C输出整数部分 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C输出整数部分 2021年12月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 输入一个双精度浮点数f&#xff0c; 输出其整…...

通过20天预测7天

训练集和测试集如何划分&#xff0c;我如何知道期望和实际的对比。 当你希望通过过去20天的数据来预测未来7天时&#xff0c;你需要进行以下步骤&#xff1a; 1. **数据准备&#xff1a;** 将过去20天的数据整理成合适的格式&#xff0c;其中包括20天的特征和未来7天的目标。…...

【python】均值、中值和高斯滤波详解和示例

本文对均值、中值和高斯滤波进行详解&#xff0c;以帮助大家理解和使用。 这里写目录标题 均值滤波中值滤波高斯滤波核大小为&#xff08;9,9&#xff09;核大小为&#xff08;51,51&#xff09; 小结 下面是示例中使用的原图。 均值滤波 均值滤波是一种简单的平滑滤波器&…...

基于STM32的循迹小车项目实战

循迹小车是一种能够沿着预定路线行驶的智能小车&#xff0c;通过巡线传感器检测路面的线路&#xff0c;并根据检测结果调整行驶方向。本项目将基于STM32微控制器实现一个简单的循迹小车&#xff0c;通过学习和实践&#xff0c;帮助初学者熟悉STM32的开发流程和掌握循迹小车的实…...

Element UI 偶发性图标乱码问题

1. 问题如图所示 2. 原因&#xff1a;sass版本低 sass: 1.26.8 sass-loader: 8.0.2 3. 解决方法 (1) 提高sass版本 (2) 在vue.config.js中添加配置 css: {loaderOptions: {sass: {sassOptions: {outputStyle: expanded}}}},4. 遇到的问题 升级后打包&#xff0c;报错 Syntax…...

UniApp中的数据存储与获取指南

目录 介绍 数据存储方案 1. 本地存储 2. 数据库存储 3. 网络存储 实战演练 1. 本地存储实例 2. 数据库存储实例 3. 网络存储实例 注意事项与最佳实践 结语 介绍 在移动应用开发中&#xff0c;数据的存储和获取是至关重要的一部分。UniApp作为一款跨平台应用开发框架…...

VUE基础的一些实战总结

目录 创建一个 Vue 应用 步骤 1&#xff1a;安装 Node.js 和 npm 步骤 2&#xff1a;安装 Vue CLI 步骤 3&#xff1a;创建 Vue 项目 步骤 4&#xff1a;启动开发服务器 步骤 5&#xff1a;访问应用程序 步骤 6&#xff1a;编辑 Vue 应用 步骤 7&#xff1a;构建和部署…...

【算法】算法题-20231117

这里写目录标题 一、搜索插入位置&#xff08;35&#xff09;二、字符串相乘&#xff08;43&#xff09;三、两个相同字符之间的最长子字符串&#xff08;1624&#xff09;四、给你一个 有效括号字符串 s&#xff0c;返回该字符串的 s 嵌套深度 一、搜索插入位置&#xff08;35…...

轮播图(多个一起轮播)

效果图 class MainActivity : Activity(), Runnable {private lateinit var viewPager: ViewPagerprivate lateinit var bannerAdapter: BannerAdapterprivate val images ArrayList<Int>() // 存储图片资源的列表private val handler Handler() // 用于定时发送消息…...

OpenCV中的像素重映射原理及实战分析

引言 映射是个数学术语&#xff0c;指两个元素的集之间元素相互“对应”的关系&#xff0c;为名词。映射&#xff0c;或者射影&#xff0c;在数学及相关的领域经常等同于函数。 基于此&#xff0c;部分映射就相当于部分函数&#xff0c;而完全映射相当于完全函数。 说的简单点…...

如何快速搭建Spring Boot接口调试环境并实现公网访问

文章目录 前言1. 本地环境搭建1.1 环境参数1.2 搭建springboot服务项目 2. 内网穿透2.1 安装配置cpolar内网穿透2.1.1 windows系统2.1.2 linux系统 2.2 创建隧道映射本地端口2.3 测试公网地址 3. 固定公网地址3.1 保留一个二级子域名3.2 配置二级子域名3.2 测试使用固定公网地址…...

简单的用Python实现一下,采集某牙视频,多个视频翻页下载

前言 表弟自从学会了Python&#xff0c;每天一回家就搁那爬视频&#xff0c;不知道的以为是在学习&#xff0c;结果我昨天好奇看了一眼&#xff0c;好家伙&#xff0c;在那爬某牙舞蹈区&#xff0c;太过分了&#xff01; 为了防止表弟做坏事&#xff0c;我连忙找了个凳子坐下&…...

【手撕数据结构】二分查找(好多细节)

&#x1f308;键盘敲烂&#xff0c;年薪30万&#x1f308; 目录 普通版本的二分查找&#xff1a; right只负责控制边界(少了两次比较)&#xff1a; 时间复杂度更稳定的版本&#xff1a; BSLeftmost&#xff1a; BSRightmost&#xff1a; 普通版本的二分查找&#xff1a; …...

Python+Selenium WebUI自动化框架 -- 基础操作封装

前言&#xff1a; 封装Selenium基本操作&#xff0c;让所有页面操作一键调用&#xff0c;让UI自动化框架脱离高成本、低效率时代&#xff0c;将用例的重用性贯彻到极致&#xff0c;让烦人的PO模型变得无所谓&#xff0c;让一个测试小白都能编写并实现自动化。 知识储备前提&a…...

PyCharm 【unsupported Python 3.1】

PyCharm2020.1版本&#xff0c;当添加虚拟环境发生异常&#xff1a; 原因&#xff1a;Pycharm版本低了&#xff01;不支持配置的虚拟环境版本 解决&#xff1a;下载PyCharm2021.1版本&#xff0c;进行配置成功&#xff01;...

flutter TabBar指示器

第一层tabView import package:jade/configs/PathConfig.dart; import package:jade/customWidget/MyCustomIndicator.dart; importpackage:jade/homePage/promotion/promotionPost/MyPromotionListMainDesc.dart; import package:jade/homePage/promotion/promotionPost/MyPr…...