1、安装Docker
1.1、卸载Docker
注:sudo命令针对没登陆root的用户
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
1.2、安装工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
执行这一步如果报错
错误:为仓库 'appstream' 下载元数据失败 : Cannot prepare internal mirrorlist: Curl error (6): Couldn't resolve host name for http://mirrorlist.centos.org/?release=8&arch=x86_64&repo=AppStream&infra=stock [Could not resolve host: mirrorlist.centos.org]
参考:修复错误:无法下载存储库“AppStream”的元数据 (linux-console.net)
sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*
sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*
然后重新执行安装命令
1.3、添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
1.4、安装Docker
sudo yum -y install docker-ce
执行如果报错
执行这段
sudo yum install -y docker-ce --allowerasing
1.5、开启Docker服务
sudo systemctl start docker
1.6、开机自启Docker服务
sudo systemctl enable docker
1.7、查看Docker信息
sudo docker info
2、配置Docker
2.1、配置阿里云镜像
sudo vim /etc/docker/daemon.json
2.2、添加国内镜像源
{
"registry-mirrors":
[
"https://registry.docker-cn.com",
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://hub.uuuadc.top",
"https://docker.anyhub.us.kg",
"https://dockerhub.jobcher.com",
"https://dockerhub.icu",
"https://docker.ckyl.me",
"https://docker.awsl9527.cn",
"https://mirror.baidubce.com"
]
}
2.3、重启Docker服务
sudo systemctl restart docker
3、安装MySQL
3.1、拉取MySQL镜像
sudo docker pull mysql
如果这里拉取超时需要配置一个DNS
修改配置文件
sudo vim /etc/resolv.conf
添加以下内容:
nameserver 8.8.8.8
nameserver 8.8.4.4
修改Docker配置文件
sudo vim /etc/docker/daemon.json
添加以下内容:
"dns": ["8.8.8.8", "8.8.4.4"]
保存,然后重启Docker服务
sudo systemctl restart docker
然后重新拉取镜像
sudo docker pull mysql
3.2、查看镜像
docker images
3.3、创建容器
sudo docker run --name=mysql -it -p 3306:3306 -v /opt/data/mysql/mysqld:/var/run/mysqld -v /opt/data/mysql/db:/var/lib/mysql -v /opt/data/mysql/conf:/etc/mysql/conf.d -v /opt/data/mysql/files:/var/lib/mysql-files -e MYSQL_ROOT_PASSWORD=123456 --privileged=true -d mysql:8.0.13
docker run 创建一个新的容器 , 同时运行这个容器
–name mysql 启动容器的名字
-d 后台运行
-p 3306:3306 将容器的 3306 (后面那个) 端口映射到主机的 3306 (前面那个) 端口
–restart unless-stopped 容器重启策略
-v /mydata/mysql/log:/var/log/mysql 将日志文件夹挂载到主机
-v /mydata/mysql/data:/var/lib/mysql 将mysql储存文件夹挂载到主机
-v /mydata/mysql/conf:/etc/mysql 将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=123456 设置 root 用户的密码
mysql:8.0.13 启动哪个版本的 mysql (本地镜像的版本)
3.4、进入MySQL容器内部
docker exec -it mysql /bin/bash
或者
docker exec -it mysql bash
执行
mysql -u root -p
密码是123456 (对应的docker run 后面输入的密码)
3.5、更改密码并授权
更改密码
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '123456';
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
授权
GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION;
如果这里报错
ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded
参考:
修复 MySQL 8.4 的 "mysql_native_password is not loaded" 插件未加载错误 | 日思录 (tubring.cn)
3.6、刷新权限
FLUSH PRIVILEGES;
3.7、退出并开放端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent
systemctl enable firewalld.service //设置开机启用防火墙
systemctl disable firewalld.service //设置开机禁用防火墙
systemctl start firewalld //启动防火墙
systemctl stop firewalld //关闭防火墙
systemctl status firewalld //查看防火墙状态
firewall-cmd --state //查看防火墙状态
firewall-cmd --reload //重新加载配置
firewall-cmd --list-ports //查看已开放端口
firewall-cmd --zone=public --add-port=3306/tcp --permanent //开放端口3306
firewall-cmd --zone=public --remove-port=3306/tcp --permanent //关闭端口3306
3.8、重启防火墙
systemctl restart firewalld
3.9、测试连接
密码是授权时写的密码