Docker与微服务实战
文章目录
- Docker与微服务实战
- 1 基础篇 【零基小白】
- 8 Docker 常规安装简介
- 8.3 安装MySQL
- 8.3.1 docker hub上面查找mysql镜像
- 8.3.2 从docker hub上(阿里云加速器)拉取mysql镜像到本地标签为5.7
- 8.3.3 使用mysql5.7镜像创建容器(也叫运行镜像)
1 基础篇 【零基小白】
8 Docker 常规安装简介
8.3 安装MySQL
8.3.1 docker hub上面查找mysql镜像
就是它 了,官方认证
点进去
OK,使用方式 也在下面 有非常 详细的介绍。
8.3.2 从docker hub上(阿里云加速器)拉取mysql镜像到本地标签为5.7
命令:docker pull mysql:5.7
OK, 这样镜像 就有了
8.3.3 使用mysql5.7镜像创建容器(也叫运行镜像)
【1】命令出处 https://hub.docker.com/_/mysql
官网:
【2】简单版
① 使用MySQL 镜像
docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7
docker ps
OK, 容器启动成功
docker exec -it 容器ID /bin/bash
OK,进入了 容器内部
mysql -u root -p
OK, 登录成功
查看数据库 show databases;
没毛病
创建并使用 数据库
OK
来张表
OK,创建成功
插入一条数据
OK, 查询全部
没毛病,这是在容器内部进行操作
【3】外部Win10也来连接运行在dokcer上的mysql容器实例服务
笔者这里 就使用 Navicat 了
一下就成功 了【基操勿6】
看看数据表
没啥问题
在工具里面 新增一条数据
没毛病哈
现在尝试插个 中文的名字
可以看到直接 报错了
这个就是 一个很常见的问题,中文乱码
原因【docker上默认字符集编码隐患】
查看当前的 字符集
docker里面的mysql容器实例查看,内容如下:
SHOW VARIABLES LIKE 'character%';
OK,很明显,就是latin1 这个默认的编码
当然工具中可能不一样
这是工具帮我们 做过处理,以服务器为准
而且现在我们 没有做容器数据卷,如果容器实例 被干掉了,那就没了
【删除容器后,里面的mysql数据如何办】
那就 再来一遍吧,先把现在这个实例干掉
这就是 真没了【所以这是 简单版】
【3】 实战版
① 新建mysql容器实例
命令
docker run -d -p 3306:3306 --privileged=true \
-v /dingjiaxiong/mysql/log:/var/log/mysql \
-v /dingjiaxiong/mysql/data:/var/lib/mysql \
-v /dingjiaxiong/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456 \
--name mysql \
mysql:5.7
直接运行
OK,容器实例 运行成功
② 新建 my.cnf
通过容器卷同步给mysql容器实例 → 解决中文乱码问题
my.cnf
[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8
OK
③ 重新启动mysql容器实例再重新进入并查看字符编码
进入容器查看字符编码
OK, 这下就没问题 了
④ 再新建库新建表再插入中文测试
这里笔者就直接用 工具了
创建数据库
创建数据表
插入中文 数据
OK,中文乱码问题解决
⑤ 结论
之前的DB 无效
修改字符集操作+重启mysql容器实例
之后的DB 有效,需要新建
结论:docker安装完MySQL并run出容器后,建议请先修改完字符集编码后再新建mysql库-表-插数据
⑥ 实验
假如将当前容器实例删除,再重新来一次,之前建的abc 数据库实例还有吗?trytry
而且字符集编码 是依据配置的
OK, 笔者的实验结论
假如将当前容器实例删除,再重新来一次,之前建的abc 数据库实例还有,配置也不变。【容器数据卷已 实现数据持久化】
【OK, 这就是 MySQL 的安装了】