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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【仿真动画】ABB IRB 8700 机器人搬运(ruckig在线轨迹生成)动画欣赏

场景 动画 一、IRB 8700简介 二、动画脚本重点分析 2.1 sim.moveToPose 通过在两个 poses 之间执行插值,使用 Ruckig 在线轨迹生成器生成对象运动数据。该函数可以通过处理 4 个运动变量(x、y、z 和两个姿势之间的角度)或单个运动变量&#…

Transformer原理详解

前言:好久没有用了,我已经快忘记了自己还有一个CSDN账号了。 在某位不知名好友的提醒下,终于拾起来了,自己也从大二转变成了研二。 目前研究方向主要为:时间序列预测,自然语言处理,智慧医疗 欢迎…

git 指定时间代码统计

指定时间代码统计 用法 13 - 17 号 代码情况 近一周 git log --since2023-11-13 00:00:00 --until2023-11-17 23:00:00 --prettytformat: --numstat | awk { add $1; subs $2; loc $1 - $2 } END { printf "added lines: %s, removed lines: %s,total lines: %s\n&…

map和set的简易封装(纯代码)

RBTree.h #pragma once#include<iostream> #include<vector> using namespace std;enum colar { red,black };template<class T>//有效参数就一个 struct RBTreeNode {RBTreeNode(const T& data):_left(nullptr), _right(nullptr), _parent(nullptr)…

Vue bus事件总线的原理与使用

这里写自定义目录标题 一、 Vue Bus 总线原理二、Vue bus的使用1、创建总线&#xff1a; 在 Vue 应用中&#xff0c;可以创建一个 Vue 实例作为总线&#xff0c;用于管理事件。2、事件的发布与订阅&#xff1a; 组件通过订阅事件来监听总线上的消息&#xff0c;而其他组件则通过…

(免费)双相情感障碍筛查MDQ 在线测试双向情感障碍

MDQ用于筛查双相障碍&#xff0c;主要包含13个关于双相障碍症状的是非问题&#xff0c;当前测试采用的量表为2010年杨海晨博士翻译版。该量表为目前世界范围内最常用的双相障碍筛查量表&#xff0c;目前在精神科门诊最为常用的量表之一。 双向情感障碍筛查量表&#xff0c;也叫…

Linux(多用户下)查看cuda、cudnn版本、查看已经安装的cuda版本相关命令

查看已经安装的CUDA多个版本 linux 中cuda默认安装在/usr/local目录中&#xff1a; -可以使用命令&#xff1a; ls -l /usr/local | grep cuda查看该目录下有哪些cuda版本&#xff1a; 如果输出&#xff1a; lrwxrwxrwx 1 root root 21 Dec 17 2021 cuda -> /usr/loc…

监控直流防雷浪涌保护器综合方案

监控系统是一种广泛应用于安防、交通、工业、军事等领域的信息系统&#xff0c;它通过摄像机、传输线路、监控中心等设备&#xff0c;实现对目标区域的实时监视和控制。然而&#xff0c;监控系统也面临着雷电的威胁&#xff0c;雷电可能通过直击雷、感应雷、雷电波侵入等途径&a…

React实战演练项⽬一需求分析及vite_react搭建项目

React实战演练项⽬一需求分析及项目初始化 需求分析 刚学完React,开始找项目进行上手练习&#xff01; 页面组件拆分&#xff1a; 头部&#xff1a;导航tab、搜索框、登录注册 中间&#xff1a;分类导航、轮播图、新人福利、高单价产品导航 课程分类列表、底部内容、登陆提…

当攻防演练已成常态,企业应该相信西医还是老中医?

在面对疾病时&#xff0c;很多人常常会犹豫不决&#xff0c;不知道应该选择中医还是西医进行治疗。与疾病斗争的过程也是一场“战斗”&#xff0c;需要选择合适的“武器”和策略。有些人认为西医疗效快&#xff0c;能够迅速缓解症状&#xff1b;而另一些人则认为中医治疗更根本…

m1 rvm install 3.0.0 Error running ‘__rvm_make -j8‘

在使用M1 在安装cocopods 前时&#xff0c;安装 rvm install 3.0.0遇到 rvm install 3.0.0 Error running __rvm_make -j8 备注: 该图片是借用其他博客图片&#xff0c;因为我的环境解决完没有保留之前错误信息。 解决方法如下&#xff1a; 1. brew uninstall --ignore-depe…

泛型编程 -- 模板详解

一、模板 在没有模板之前&#xff0c;如果我们写一个swap()两数交换函数&#xff0c;因为我们要支持 int 与int 交换 、double 与 double 交换等等情况&#xff0c;所以要实现swap()函数的多个重载&#xff0c;显得很繁琐&#xff0c;于是就引入了模板。 模板就是在需要模板的地…

idea一键打包docker镜像并推送远程harbor仓库的方法(包含spotify和fabric8两种方法)--全网唯一正确,秒杀99%水文

我看了很多关于idea一键打包docker镜像并推送harbor仓库的文章&#xff0c;不论国内国外的&#xff0c;基本上99%都是瞎写的&#xff0c; 这些人不清楚打包插件原理&#xff0c;然后就是复制粘贴一大篇&#xff0c;写了一堆垃圾&#xff0c;然后别人拿来也不能用。 然后这篇文…

MySQL表操作

1.创建表 创建一个表 表的字符集为utf8&#xff0c;校验规则为utf8_bin 存储引擎为MYisam 2.查看表结构 desc 表名&#xff1b; 3.查看表内容 select * from 表名&#xff1b; 4.查看数据库有几个表 show tables; 附&#xff1a;查看创建表时的语句 show create table 表名…

怎么去掉邮件内容中的回车符

上图是Outlook 截图&#xff0c;可见1指向的总有回车符&#xff1b; 故障原因&#xff1a; 不小心误按了箭头4这个选项&#xff1b; 解决方法&#xff1a; 点击2箭头确保tab展开&#xff1b; 点击3以找到箭头4. 取消勾选或者多次点击&#xff0c;即可解决。

web3资讯及远程工作

各位如果想了解区块链相关的消息可以通过如下网址了解&#xff0c;里面还会有相关职位招聘&#xff08;包括远程工作&#xff09;&#xff0c;还可以在里面进行发帖&#xff0c;进入即可获得1000积分&#xff0c;后期可以兑换一些礼品Cryptosquare

Java简介、基本语法

一、Java简介&#xff1a; Java 是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 面向对象程序设计语言和 Java 平台的总称。 Java主要的特性&#xff1a; 1、Java语言是简单的的&#xff1a; Java语言的语法与C、C语言接近。Java丢弃了C中的一些特性&#xff0c;如操…

android 数独小游戏 经典数独·休闲益智

一款经典数独训练app 标题资源下载 &#xff08;0积分&#xff09;https://download.csdn.net/download/qq_38355313/88544810 首页页面&#xff1a; 1.包含有简单、普通、困难、大师四种难度的数独挑战供选择&#xff1b; 记录页面&#xff1a; 1.记录用户训练过的数独信息&…

HT8313 D/AB切换 音频功率放大器

HT8313具有AB类和D类的自Y切换功能&#xff0c;在受到D类功放EMI干扰困扰时&#xff0c;可随时切换至AB类音频功放模式&#xff08;此时电荷泵升压功能关闭&#xff09;。 HT8313内部固定28dB增益&#xff0c;内置的关断功能使待机电流Z小化&#xff0c;还集成了输出端过流保护…

“说”出一个UI原型稿:来自北邮课堂的一款文心应用

在2023年秋季学期&#xff0c;北京邮电大学联合百度飞桨&#xff0c;设计了“文心一言X产品设计”的集训营主题&#xff0c;并融入到了“移动交互设计”的课程中。在完成结业作业的过程中&#xff0c;同学们将基于文心一言开展产品原型设计与初步开发。 众所周知&#xff0c;产…