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

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【ARM Trace32(劳特巴赫) 使用介绍 2.1 -- TRACE32 Practice 脚本 cmm 脚本学习】

请阅读【ARM Coresight SoC-400/SoC-600 专栏导读】 上篇文章【ARM Trace32(劳特巴赫) 使用介绍 2 - Veloce 环境中使用trace32 连接 Cortex-M33】 下篇文章【ARM Trace32(劳特巴赫) 使用介绍 2.2 – TRACE32 进阶命令之 DIAG 弹框命令】 文章目录 1. TRACE32 Practice 语法1.…

云课五分钟-07安装Opera失败-版本不匹配

前篇: 云课五分钟-06一段代码调试debug-AI与人工 其中已经遇到了一些问题,在和文心一言交互过程中,由于提问不合适,得不到所期望的结果。 那么这一节本可以避免,但是为了展示失败,需要将过程录制。 视频…

Android——gradle插件配置方式——dependencies和plugins

引言 我们知道Android studio 需要gradle插件进行构建和编译,随着AGP的升级,引入gradle插件也发生了变化。旧版本通过build.gradle文件中dependencies代码块引入,新版本通过plugins代码块引入 一、旧版本引入方式dependencies 二、新版本引入…

【SpringMvc】SpringMvc +MyBatis整理

🎄欢迎来到边境矢梦的csdn博文🎄 🎄本文主要梳理 Java 框架 中 SpringMVC的知识点和值得注意的地方 🎄 🌈我是边境矢梦,一个正在为秋招和算法竞赛做准备的学生🌈 🎆喜欢的朋友可以关…

YOLOv5 配置C2模块构造新模型

🍨 本文为[🔗365天深度学习训练营学习记录博客 🍦 参考文章:365天深度学习训练营 🍖 原作者:[K同学啊] 🚀 文章来源:[K同学的学习圈子](https://www.yuque.com/mingtian-fkmxf/zxwb4…

音频类型转换工具-可执行文件exe/dmg制作

朋友车载音乐需要MP3格式,想要个批量转换工具 准备工作 brew install ffmpeg --HEAD或者官网下载安装ffmpeg并配置环境conda install ffmpeg 或者pip install ffmpeg-python 音频类型转换程序.py文件 exe文件在windows下打包,dmg在macos下打包&#…

【数字人】7、GeneFace++ | 使用声音和面部运动系数的关系作为 condition 来指导 NeRF 重建说话头

文章目录 一、背景二、相关工作2.1 唇形同步的 audio-to-motion2.2 真实人像渲染 三、方法3.1 对 GeneFace 的继承3.2 GeneFace 的结构3.2.1 Pitch-Aware Audio-to-Motion Transform3.2.2 Landmark Locally Linear Embedding3.2.3 Instant Motion-to-Video Rendering 四、效果 …

Boolean源码解剖学

原创/朱季谦 有天突发其想,想看一下Boolean底层都做了些什么,故而去看了一番Boolean的源码,基于一些思考的基础上,输出了这篇文章。 一.类继承 Boolean的源码类定义部分如下: 1 public final class Boolean implemen…

HP惠普暗影精灵9笔记本电脑OMEN by HP Transcend 16英寸游戏本16-u0000原厂Windows11系统

惠普暗影9恢复出厂开箱状态,原装出厂Win11-22H2系统ISO镜像 下载链接:https://pan.baidu.com/s/17ftbBHEMFSEOw22tnYvPog?pwd91p1 提取码:91p1 适用型号:16-u0006TX、16-u0007TX、16-u0008TX、16-u0009TX、16-u0017TX 原厂系…

【docker启动的Jenkins时,遇到时区问题处理】

1、查看容器中的时区 [rootlocalhost jenkins]# docker exec -it jenkins cat /etc/timezone Etc/UTC而本地使用的是Asia/shanghai [rootlocalhost jenkins]# timedatectl | grep Time zoneTime zone: n/a (CST, 0800)###查看 [rootlocalhost jenkins]# cd /usr/share/zoneinf…

【数据结构(二)】稀疏 sparsearray 数组(1)

文章目录 1. 稀疏数组的应用场景1.1. 一个实际的需求1.2. 基本介绍 2. 稀疏数组转换的思路分析3. 稀疏数组的代码实现3.1. 二维数组转稀疏数组3.2. 稀疏数组转二维数组 4. 课后练习 1. 稀疏数组的应用场景 1.1. 一个实际的需求 问题:     编写的五子棋程序中&…

【VSCode】配置C/C++开发环境教程(Windows系统)

下载和配置MinGW编译器 首先,我们需要下载并配置MinGW编译器。 下载MinGW编译器,并将其放置在一个不含空格和中文字符的目录下。 配置环境变量PATH 打开控制面板。可以通过在Windows搜索栏中输入"控制面板"来找到它。 在控制面板中&#xf…

JavaScript 浮点数运算的精度问题及解决

JavaScript 浮点数运算的精度问题及解决 在 JavaScript 中整数和浮点数都属于 Number 数据类型,当浮点数做数学运算的时候,你经常会发现一些问题,举几个例子: 0.1 0.2 0.30000000000000004 console.log(0.1 0.2) 0.3000000…

vite+vue3+electron开发环境搭建

环境 node 18.14.2 yarn 1.22 项目创建 yarn create vite test01安装vue环境 cd test01 yarn yarn dev说明vue环境搭建成功 安装electron # 因为有的版本会报错所以指定了版本 yarn add electron26.1.0 -D安装vite-plugin-electron yarn add -D vite-plugin-electron根目…

关系代数、SQL语句和Go语言示例

近些年,数据库领域发展日新月异,除传统的关系型数据库外,还出现了许多新型的数据库,比如:以HBase、Cassandra、MongoDB为代表的NoSQL数据库,以InfluxDB、TDEngine为代表的时序数据[1]库,以Neo4J…

二分查找和二分答案

【深基13.例1】查找 题目描述 输入 n n n 个不超过 1 0 9 10^9 109 的单调不减的(就是后面的数字不小于前面的数字)非负整数 a 1 , a 2 , … , a n a_1,a_2,\dots,a_{n} a1​,a2​,…,an​,然后进行 m m m 次询问。对于每次询问&#x…

Django 配置 Email Admin 详细指南

概要 Django 是一个高级的 Python Web 框架,它鼓励快速开发和清洁、实用的设计。当你正在开发一个 Django 项目时,监控网站的运行情况是非常必要的。Django 提供了一个功能强大的 admin 界面,但同时也可以通过配置 email admin 来获取网站的…

vue-pdf在vue框架中的使用

在components目录下新建PdfViewer/index.vue vue-pdf版本为4.3.0 <template><div :id"containerId" v-if"hasProps" class"container"><div class"right-btn"><div class"pageNum"><input v-m…

2023年(第六届)电力机器人应用与创新发展论坛-核心PPT资料下载

一、峰会简介 大会以“聚焦电力机器人创新、助力行业数字化转型、促进产业链协同发展”为主题&#xff0c;展示电力机器人产业全景创新技术&#xff0c;探讨数字化战略下电力机器人应用前景和发展趋势。为加快推进电力机器人应用拓新&#xff0c;助力电网数字化转型升级&#…

Xrdp+Cpolar实现远程访问Linux Kali桌面

XrdpCpolar实现远程访问Linux Kali桌面 文章目录 XrdpCpolar实现远程访问Linux Kali桌面前言1. Kali 安装Xrdp2. 本地远程Kali桌面3. Kali 安装Cpolar 内网穿透4. 配置公网远程地址5. 公网远程Kali桌面连接6. 固定连接公网地址7. 固定地址连接测试 前言 Kali远程桌面的好处在于…