一、 前言

写这篇文章的原因是我不想在本机上安装别的版本的mysqlredis,但我想使用,于是我用vm装了CentOS7,安装了docker,部署了mysqlredis

环境

名称介绍
安装软件名称Docker 版本26.1.4
操作命令对象Docker 版本26.1.4
远程操作系统CentOS 7.9 64位
远程管理工具FinalShell 4.5.12
安装软件名称MySQL 版本8.3.0

二、配置YUM

报错Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=

原因:CentOS7仓库已经被归档,当前的镜像地址无法找到所需的文件

详细信息查看

解决方法

进入/etc/yum.repos.d目录下找到 CentOS-Base.repo
进入目录:

1cd /etc/yum.repos.d

依次执行:

1cp  CentOS-Base.repo   CentOS-Base.repo.backup
2vi CentOS-Base.repo

进入后改为:

 1# CentOS-Base.repo
 2#
 3# The mirror system uses the connecting IP address of the client and the
 4# update status of each mirror to pick mirrors that are updated to and
 5# geographically close to the client.  You should use this for CentOS updates
 6# unless you are manually picking other mirrors.
 7#
 8# If the mirrorlist= does not work for you, as a fall back you can try the 
 9# remarked out baseurl= line instead.
10#
11#
12 
13[base]
14name=CentOS-$releasever - Base
15#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
16#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
17#baseurl=http://vault.centos.org/7.9.2009/x86_64/os/
18baseurl=http://vault.centos.org/7.9.2009/os/$basearch/
19gpgcheck=1
20gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
21 
22#released updates 
23[updates]
24name=CentOS-$releasever - Updates
25#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates&infra=$infra
26#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
27#baseurl=http://vault.centos.org/7.9.2009/x86_64/os/
28baseurl=http://vault.centos.org/7.9.2009/updates/$basearch/
29gpgcheck=1
30gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
31 
32#additional packages that may be useful
33[extras]
34name=CentOS-$releasever - Extras
35#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras&infra=$infra
36#$baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
37#baseurl=http://vault.centos.org/7.9.2009/x86_64/os/
38baseurl=http://vault.centos.org/7.9.2009/extras/$basearch/
39gpgcheck=1
40gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
41 
42#additional packages that extend functionality of existing packages
43[centosplus]
44name=CentOS-$releasever - Plus
45#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus&infra=$infra
46#baseurl=http://mirror.centos.org/centos/$releasever/centosplus/$basearch/
47#baseurl=http://vault.centos.org/7.9.2009/x86_64/os/
48baseurl=http://vault.centos.org/7.9.2009/centosplus/$basearch/
49gpgcheck=1
50enabled=0
51gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

然后保存,依次执行:

1sudo yum clean all
2sudo yum makecache

阿里云镜像源

执行完成后进入/etc/yum.repos.d

1curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

然后执行:

1 cat CentOS-Base.repo

看着镜像是阿里云的即可。 建议在执行:

1sudo yum clean all
2sudo yum makecache

三、安装Docker及MySQL

Docker安装:详细参考

MySQL安装:详细参考

镜像源:详细参考

Docker镜像仓库:地址

1. 卸载Docker

查看docker是否存在

1docker --version

卸载

 1yum remove docker \
 2                  docker-client \
 3                  docker-client-latest \
 4                  docker-common \
 5                  docker-latest \
 6                  docker-latest-logrotate \
 7                  docker-logrotate \
 8                  docker-selinux \
 9                  docker-engine-selinux \
10                  docker-engine \
11                  docker-ce

如果在卸载过程中遇到端口占用可以杀死端口

1kill [options] <pid>
2例如:
3kill -9 8080

2. 安装Docker

更新你的包列表:

1sudo yum update

若:没有yum命令,安装yum,有的话直接跳过

1yum install -y yum-utils \
2           device-mapper-persistent-data \
3           lvm2 --skip-broken

安装必要的包,这些包可以让yum使用HTTPS:

1sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加Docker的存储库:

1sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

如果失败试一下下面这个命令,未失败直接进行下一步

1# 设置docker镜像源
2yum-config-manager \
3    --add-repo \
4    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5    
6sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
7
8yum makecache fast

安装Docker:

1sudo yum install docker-ce

启动Docker服务:

1sudo systemctl start docker

验证Docker是否安装成功:

1sudo docker pull hello-world

启动docker失败,关闭防火墙重试

1# 关闭
2systemctl stop firewalld
3# 禁止开机启动防火墙
4systemctl disable firewalld
5#查看是否关闭防火墙
6systemctl status firewalld

查看Docker运行状态:

1systemctl status docker

查看 hello-world 镜像是否存在

sudo docker images

如果不存在,可能是需要配置一下镜像源

 1sudo mkdir -p /etc/docker
 2sudo tee /etc/docker/daemon.json <<-'EOF'
 3{
 4    "registry-mirrors": [
 5        "https://p4220st1.mirror.aliyuncs.com",
 6        "https://docker.xuanyuan.me",
 7        "https://docker.1ms.run",
 8        "https://docker.sunzishaokao.com",
 9        "https://docker.1panel.live",
10        "https://hub.rat.dev",
11        "https://docker.wanpeng.top",
12        "https://doublezonline.cloud"
13        ]
14}
15EOF
16sudo systemctl daemon-reload
17sudo systemctl restart docker

3. 安装MySQL

查找MySQL镜像

1docker search mysql

拉取MySQL镜像

1docker pull mysql:8.3.0

查看MySQL镜像

1docker images mysql:8.3.0

创建挂载目录

后面用于挂载mysql容器内目录,这里就放在home目录下

1mkdir -p  /home/mysql/{conf,data,log}

创建配置文件

1cd /home/mysql/conf
2vi my.cnf

添加下面代码

 1[client]
 2#设置客户端默认字符集utf8mb4
 3default-character-set=utf8mb4
 4[mysql]
 5#设置服务器默认字符集为utf8mb4
 6default-character-set=utf8mb4
 7[mysqld]
 8#配置服务器的服务号,具备日后需要集群做准备
 9server-id = 1
10#开启MySQL数据库的二进制日志,用于记录用户对数据库的操作SQL语句,具备日后需要集群做准备
11log-bin=mysql-bin
12#设置清理超过30天的日志,以免日志堆积造过多成服务器内存爆满。2592000秒等于30天的秒数
13binlog_expire_logs_seconds = 2592000
14#解决MySQL8.0版本GROUP BY问题
15sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
16#允许最大的连接数
17max_connections=1000
18# 禁用符号链接以防止各种安全风险
19symbolic-links=0
20# 设置东八区时区
21default-time_zone = '+8:00'

4. 启动MySQL容器

-p表示端口映射 –restart=always表示容器退出时总是重启 –name表示容器命名 –privileged=true表示赋予容器权限修改宿主文件权利 -v /home/mysql/log:/var/log/mysql表示容器日志挂载到宿主机 -v /home/mysql/data:/var/lib/mysql表示容器存储文件挂载到宿主机 -v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf表示容器配置文件挂载到宿主机 -e MYSQL_ROOT_PASSWORD=a12bCd3_W45pUq6表示设置mysql的root用户密码,建议用强密码 -d表示后台运行

 1docker run \
 2-p 3306:3306 \
 3--restart=always \
 4--name mysql \
 5--privileged=true \
 6-v /home/mysql/log:/var/log/mysql \
 7-v /home/mysql/data:/var/lib/mysql \
 8-v /home/mysql/conf/my.cnf:/etc/mysql/my.cnf \
 9-e MYSQL_ROOT_PASSWORD=a12bCd3_W45pUq6 \
10-d mysql:8.3.0  

快去使用你的数据库软件连接一下吧!!!