Docker中的mysql安装----数据卷持久化

一、先来说说最普通的安装——单机版

docker hub上给出了mysql的安装方法:

 所以我们只需要拉取镜像后再运行便可:
1.拉取mysql镜像(以5.7版本为例)

docker pull mysql:5.7

2.运行镜像生成容器(指定暴露端口以及密码)

docker run --name mysql -dp 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

3.确定运行之后便可进去到容器中

docker exec -it mysql /bin/bash

最后mysql -uroot -p便可以对数据库进行操作

但是:这样的安装有很大的问题

  1. 编码问题——可以看到,安装之后的数据库编码不是utf-8
  2. 数据丢失——如果不小心删除了容器,那么数据也会丢失,这是很危险的

所以我们需要使用第二种——通过docker数据卷的方式来保证持久化

二、指定数据卷安装

在docker run时指定数据卷:

docker run --name mysql \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /root/mysql/data:/var/lib/mysql \
-v /root/mysql/log:/var/log/mysql \
-v /root/mysql/conf:/etc/mysql/conf.d \
-dp 3306:3306 \
mysql:5.7

这里指定了三个数据卷:

  • -v /root/mysql/log:/var/log/mysql

  • -v /root/mysql/data:/var/lib/mysql

  • -v /root/mysql/conf:/etc/mysql/conf.d

因为:

  1. 在linux下,mysql想要改变编码,需要在/etc/mysql/conf.d下面新建my.conf文件,然后编写
  2. linux下的mysql数据库是在/var/lib/mysql目录下,日志信息是在/var/log/mysql下

 所以我们可以在/root目录下创建数据卷,具体步骤如下:

1.在/etc/mysql/conf.d下新建my.conf文件指定编码(vim my.conf)

[client]

default_character_set=utf8

[mysql]

default_character_set=utf8

[mysqld]

character_set_server=utf8

2.重启mysql容器

docker restart mysql

3.进入容器

docker exec -it mysql /bin/bsah

mysql -urooot -p

此时再去查看mysql的编码,可以看到已经变为了utf-8

同时容器中的数据也通过数据卷挂载点的方式从/var/lib/mysql同步到了/root/mysql/data

这样即使容器不小心删除,那么再次指定数据卷启动,那么编码文件会自动生成

而且数据也会同步到容器的/var/lib/mysql,不会有乱码以及数据丢失的情况出现

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值