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镜像

docker技术入门与实战 第三版 docker入门与实战第三版pdf_微服务

就是它 了,官方认证

点进去

docker技术入门与实战 第三版 docker入门与实战第三版pdf_docker_02

OK,使用方式 也在下面 有非常 详细的介绍。

8.3.2 从docker hub上(阿里云加速器)拉取mysql镜像到本地标签为5.7

命令:docker pull mysql:5.7

docker技术入门与实战 第三版 docker入门与实战第三版pdf_mysql_03

OK, 这样镜像 就有了

8.3.3 使用mysql5.7镜像创建容器(也叫运行镜像)

【1】命令出处 https://hub.docker.com/_/mysql

官网:

docker技术入门与实战 第三版 docker入门与实战第三版pdf_mysql_04

【2】简单版

① 使用MySQL 镜像

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -d mysql:5.7

docker ps

docker技术入门与实战 第三版 docker入门与实战第三版pdf_docker_05

OK, 容器启动成功

docker exec -it 容器ID /bin/bash

docker技术入门与实战 第三版 docker入门与实战第三版pdf_docker技术入门与实战 第三版_06

OK,进入了 容器内部

mysql -u root -p

docker技术入门与实战 第三版 docker入门与实战第三版pdf_mysql_07

OK, 登录成功

查看数据库 show databases;

docker技术入门与实战 第三版 docker入门与实战第三版pdf_数据_08

没毛病

创建并使用 数据库

docker技术入门与实战 第三版 docker入门与实战第三版pdf_docker_09

OK

来张表

docker技术入门与实战 第三版 docker入门与实战第三版pdf_mysql_10

OK,创建成功

插入一条数据

docker技术入门与实战 第三版 docker入门与实战第三版pdf_数据_11

OK, 查询全部

docker技术入门与实战 第三版 docker入门与实战第三版pdf_docker_12

没毛病,这是在容器内部进行操作

【3】外部Win10也来连接运行在dokcer上的mysql容器实例服务

笔者这里 就使用 Navicat 了

docker技术入门与实战 第三版 docker入门与实战第三版pdf_docker_13

一下就成功 了【基操勿6】

看看数据表

docker技术入门与实战 第三版 docker入门与实战第三版pdf_docker技术入门与实战 第三版_14

没啥问题

在工具里面 新增一条数据

docker技术入门与实战 第三版 docker入门与实战第三版pdf_数据_15

没毛病哈

现在尝试插个 中文的名字

docker技术入门与实战 第三版 docker入门与实战第三版pdf_docker技术入门与实战 第三版_16

可以看到直接 报错了

这个就是 一个很常见的问题,中文乱码

原因【docker上默认字符集编码隐患】

查看当前的 字符集

docker里面的mysql容器实例查看,内容如下:
 
SHOW VARIABLES LIKE 'character%';

docker技术入门与实战 第三版 docker入门与实战第三版pdf_docker技术入门与实战 第三版_17

OK,很明显,就是latin1 这个默认的编码

当然工具中可能不一样

docker技术入门与实战 第三版 docker入门与实战第三版pdf_mysql_18

这是工具帮我们 做过处理,以服务器为准

而且现在我们 没有做容器数据卷,如果容器实例 被干掉了,那就没了

【删除容器后,里面的mysql数据如何办】

那就 再来一遍吧,先把现在这个实例干掉

docker技术入门与实战 第三版 docker入门与实战第三版pdf_微服务_19

这就是 真没了【所以这是 简单版】

【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

直接运行

docker技术入门与实战 第三版 docker入门与实战第三版pdf_数据_20

OK,容器实例 运行成功

② 新建 my.cnf

通过容器卷同步给mysql容器实例 → 解决中文乱码问题

my.cnf

[client]
default_character_set=utf8
[mysqld]
collation_server = utf8_general_ci
character_set_server = utf8

docker技术入门与实战 第三版 docker入门与实战第三版pdf_docker_21

OK

③ 重新启动mysql容器实例再重新进入并查看字符编码

docker技术入门与实战 第三版 docker入门与实战第三版pdf_微服务_22

进入容器查看字符编码

docker技术入门与实战 第三版 docker入门与实战第三版pdf_docker_23

OK, 这下就没问题 了

④ 再新建库新建表再插入中文测试

这里笔者就直接用 工具了

创建数据库

docker技术入门与实战 第三版 docker入门与实战第三版pdf_数据_24

创建数据表

docker技术入门与实战 第三版 docker入门与实战第三版pdf_微服务_25

插入中文 数据

docker技术入门与实战 第三版 docker入门与实战第三版pdf_docker_26

OK,中文乱码问题解决

⑤ 结论

之前的DB 无效

修改字符集操作+重启mysql容器实例

之后的DB 有效,需要新建

结论:docker安装完MySQL并run出容器后,建议请先修改完字符集编码后再新建mysql库-表-插数据

⑥ 实验

假如将当前容器实例删除,再重新来一次,之前建的abc 数据库实例还有吗?trytry

docker技术入门与实战 第三版 docker入门与实战第三版pdf_mysql_27

而且字符集编码 是依据配置的

docker技术入门与实战 第三版 docker入门与实战第三版pdf_docker技术入门与实战 第三版_28

OK, 笔者的实验结论

假如将当前容器实例删除,再重新来一次,之前建的abc 数据库实例还有,配置也不变。【容器数据卷已 实现数据持久化】

【OK, 这就是 MySQL 的安装了】