Docker 快速搭建MySQL
首先应该知道MySQL 的前置知识,如MySQL IP 端口密码等基础知识
干货部分
- docker 环境
yum install -y docker ;service docker start;
- 拉取MySQL 镜像
docker pull mysql:8.0.17
- 启动镜像
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
- 检测镜像启动
docker ps
如果有则成功,没有则需要查看日志 docker logs mysql8
分析原因后,删除这个失败镜像docker rm mysql8
运行第三步
- 远程连接
拿客户端连接 - 涉及的相关命令
- docker start/top/restart 容器别名或id 容器启动/停止/重启
原理部分
-
首先具备docker 环境 ,使用
yum -y docker
安装 加 -y 免除确认环节 docker 就是名字了 -
拉取镜像
docker 镜像可以在https://hub.docker.com/_/mysql?tab=description
中看到
页面tab 分三列description
reviews
tags
主要看第一列描述
和 第三列tag
拉取镜像命令docker pull mysql:8.0.17
docker 是固定使用docker 操作
pull 拉取镜像
后面接上镜像名:版本号mysql:8.0.17
版本号不加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
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
指定字符集 , 乱码问题很头疼的 -
检测
docker ps
可以查看docker 中正常运行
的全部容器 如果发现没有则启动失败有异常,使用docker log 容器别名或者容器id
查看日志
然后必须删除容器docker rm 容器别名或id
后再运行 , 因为失败运行容器也会占有别名 可以使用docker ps -a
查看全部
同时如果容器正在运行如果需要删除先得停下docker stop 容器别名或id
-
最后成功用客户端连接