Docker部署MySQL
(一)安装Docker
首先需要准备一个Linux虚拟机系统,我这里选择CentOS7发行版的作为演示,并使用MobaXterm连接虚拟机。
 
 
①卸载旧版本的Docker
需要先进入root权限,再执行以下执行
yum remove docker \
 docker-client \
 docker-client-latest \
 docker-common \
 docker-latest \
 docker-latest-logrotate \
 docker-logrotate \
 docker-engine
 
②配置Docker的yum库
首先安装一个yum工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
 
安装成功后执行命令,配置Docker的yum源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
 
③安装Docker引擎
sudo yum install -y docker-ce docker-ce-cli containerd.io
 
④验证Docker版本
docker -v
 
⑤启动与设置Docker服务
//启动Docker进程
sudo systemctl start docker
//停止Docker进程
sudo systemctl stop docker
//设置开机自启
sudo systemctl enable docker
 
⑥校验Docker服务
//查看是否开启Docker进程
docker images
 
如下图所示则是成功开启
 
⑥配置阿里云/腾讯云镜像加速器
进入阿里云官网并找到 容器镜像服务ACR
 
 
 获取到个人的镜像加速器
- 创建配置文件
 
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
// 替换为你的阿里云控制台获取的专属加速地址
"registry-mirrors": ["https://(your-aliyun-mirror.mirror).aliyuncs.com"] 
}
EOF
 
- 重启Docker服务
 
sudo systemctl daemon-reload
sudo systemctl restart docker
 
安装成功!!
- 常用指令
 
//查看Docker版本
docker --version
//查看运行中的容器
docker ps
//停止所有容器
docker stop $(docker ps -aq)
 
- 镜像库推荐
官方镜像库:Docker Hub (https://hub.docker.com)
国内加速源:{
中科大镜像:https://docker.mirrors.ustc.edu.cn
网易镜像:https://hub-mirror.c.163.com
腾讯云镜像:https://mirror.ccs.tencentyun.com
阿里云镜像(需登录控制台获取专属地址)
} 
(二)部署MySQL
一、安装Mysql
①创建并运行容器

docker run -d \
    --name mysql \
    //部署在端口3307上(防止与以前Linux虚拟机上非使用Docker安装的Mysql所占端口冲突)
    -p 3307:3306 \    
    -e TZ=Asia/Shanghai \
    -e MYSQL_ROOT_PASSWORD=123456 \   //设置密码
    mysql
 
②验证容器状态
//查看容器是否运行
docker ps -a | grep mysql
 

 若显示Up则是成功运行
③检查启动日志
//查看容器启动日志
docker logs mysql
 
④连接MySQL验证服务
- 在虚拟机上进行连接Mysql
 
//从宿主机连接(使用映射的端口)
mysql -h 192.168.xxx.xxx -P 3307 -u root -p123456
 
- 使用DataGrip或其他客户端在Windows系统上进行远程连接

 
⑤设置开机自启
//设置容器随Docker服务自动启动
docker update --restart=always mysql
 
二、安装解析

 隔离环境指的是运行该程序时它与其他进程之间是互相隔离的、互相不干扰的,也就可以在一台服务器上部署多个应用,甚至去部署一个Mysql集群都没有问题。
 我们也就可以在该公共仓库中找到各种各样常用软件的镜像,也可以把自己构建好的镜像上传上去。
(三)命令解读

一、创建并运行容器的命令解析

①端口为什么需要"映射":
假如现在有一台服务器(类似我们的虚拟机),我们可以随意地使用主机对它进行访问。现在它在内部的一个容器中部署了MySQL数据库,且它的端口号为3306。但是因为容器的隔离环境让它获得了自己独立的内存空间、文件系统以及网络空间,所以该MySQL容器里的进程启动后甚至还能获得自己的IP地址,而该网络空间对外是不可访问的。
 根据一个指令来获取该MySQL服务器的IP地址
 
 
 当我们直接去访问该地址会发现访问不通,因为它是对外隔离的
 
 因此如果我们的客户端想要去直连该容器的端口是会被拒绝的。
 那么我们就需要去连接外边的这台服务器(或虚拟机),也就是容器所在的该及机器(称之为宿主机)。再去做端口映射,把宿主机的3306端口与容器的3306端口做映射,因为Docker内部可以帮助我们做好该映射。当我们去访问外部机器的3306端口时,Docker就会把该请求转到容器内的3306端口,也就相当于间接地访问到了该容器。
而-p 3306:3306指令前面的端口指的是宿主机端口,后面的端口指的是容器内端口(它取决于进程,是不需要进行改动的,安装的是MySQL,它的容器内端口就永远都是3306)。假设在该虚拟机上有两台MySQL数据库,那么它们的容器内端口都是3306,因为它们互相不冲突,可以共享该端口;而宿主机端口需要进行变化,两台数据库映射的宿主机端口不同。
②-e 参数的环境变量是由该镜像制作者来决定的
我们要通过查看镜像文档来获取该参数
 
 可以直接在官网上进行查询
二、镜像命名规范

