Docker 快速搭建MySQL

首先应该知道MySQL 的前置知识,如MySQL IP 端口密码等基础知识

干货部分

  1. docker 环境

yum install -y docker ;service docker start;

  1. 拉取MySQL 镜像

docker pull mysql:8.0.17

  1. 启动镜像

mkdir -p /data/docker/mysql
docker run -p 3306:3306 --restart=always --name mysql8 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=root -v /data/docker/mysql:/var/lib/mysql --privileged=true mysql:8.0.17 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

  1. 检测镜像启动

docker ps
Docker 快速搭建MySQL
如果有则成功,没有则需要查看日志 docker logs mysql8
分析原因后,删除这个失败镜像docker rm mysql8运行第三步

  1. 远程连接
    拿客户端连接
  2. 涉及的相关命令
  • docker start/top/restart 容器别名或id 容器启动/停止/重启

原理部分

  1. 首先具备docker 环境 ,使用yum -y docker 安装 加 -y 免除确认环节 docker 就是名字了

  2. 拉取镜像
    docker 镜像可以在 https://hub.docker.com/_/mysql?tab=description 中看到
    页面tab 分三列 description reviews tags
    Docker 快速搭建MySQL
    主要看第一列 描述 和 第三列 tag
    拉取镜像命令 docker pull mysql:8.0.17
    docker 是固定使用docker 操作
    pull 拉取镜像
    后面接上镜像名:版本号 mysql:8.0.17 版本号不加 mysql 表示拉取最新版本

  3. 拉取镜像后启动镜像
    docker run -p 3306:3306 --restart=always --name mysql8 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD=root -v /data/docker/mysql:/var/lib/mysql --privileged=true mysql:8.0.17 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    docker run docker 运行一个镜像 后面接相关参数
    -p 3306:3306 表示暴露端口,因为docker 是有容器概念 ,镜像启动在docker容器中 和外面的操作系统可以将容器理解为系统内部的小虚拟机 所以外面访问里面需要的端口关联起来 -p 3306:3306 前面的-p 代表这一条命令的作用 端口关联 后面的3306:3306 前面是系统端口 后面的是镜像内部端口 .一般镜像外部端口会和内部一样,除非你弄多个镜像一起运行
    --restart=always 表示自动重启 , 如果外部系统重启后,docker 自动运行后 镜像也会自动重启
    --name mysql8 给这个镜像运行起个别名 随便定义,一般以好记为主,不定义会随机命名,同时后面的如查询日志docker logs mysql8 如果不记得别名 一般都是输入容器id
    -e TZ=Asia/Shanghai -e 开头都是MySQL运行的设置与docker无关,因此这些设置可以在descrption中找到或者在mysql 教程文档中,如果配置内容多的花一般建议配置文件方式,可以快捷键ctrl + f 关键字,TZ=Asia/Shanghai时区设定为亚洲上海时区,也就是北京时区 , 因为时区和时间都是外面的,而且有时候服务器不在本地,时间不一致也是个很头疼的问题
    -e MYSQL_ROOT_PASSWORD=root 设定密码
    -v /data/docker/mysql:/var/lib/mysql --privileged=true 挂载目录,因为docker 容器重启后你的数据库内容就没了,所以如何保证重启数据不失效,就要把文件挂在外部一个目录中 --privileged=true 是保证挂载权限 , 同理也可以将日志等内容挂载在外部
    mysql:8.0.17 这是镜像的名字和版本号 如果不加版本号默认启动最新版本 latest
    --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci 指定字符集 , 乱码问题很头疼的

  4. 检测
    docker ps 可以查看docker 中正常运行的全部容器 如果发现没有则启动失败有异常,使用docker log 容器别名或者容器id 查看日志
    然后必须删除容器docker rm 容器别名或id后再运行 , 因为失败运行容器也会占有别名 可以使用docker ps -a 查看全部
    同时如果容器正在运行如果需要删除先得停下 docker stop 容器别名或id

  5. 最后成功用客户端连接