一、 前言
写这篇文章的原因是我不想在本机上安装别的版本的mysql
和redis
,但我想使用,于是我用vm
装了CentOS7
,安装了docker
,部署了mysql
和redis
。
环境
名称 | 介绍 |
---|---|
安装软件名称 | 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
快去使用你的数据库软件连接一下吧!!!