【谷粒商城笔记】1.基于docker的mysql、redis环境配置

0.系统

宝塔 v7.5.1
Centos v8.2

1. 安装Docker

直接yum install docker会提示找不到

> docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
Loaded plugins: fastestmirror
No Match for argument: docker
No Match for argument:  docker-client
No Match for argument: docker-client-latest
No Match for argument:  docker-common
No Match for argument:  docker-latest
No Match for argument:  docker-latest-logrotate
No Match for argument:  docker-logrotate
No Match for argument:  docker-engine
No Packages marked for removal

这是因为

阿里云服务器ECS安装Docker提示No match for argument: docker-ce,No match for argument: docker-ce-cli
版本不同导致

虽然这篇文章说可以看阿里云官方文档部署并使用Docker(CentOS 8),但我按照该方法仍无法安装成功。最后按照下面这篇博客的教程安装成功。

centos安装docker显示 No package docker-ce available

# 查看操作系统的发行版号 //内核版本必须是3.10+以上的版本
uname -r

# 更新yum
yum update -y

# 安装 yum-utils,它提供了 yum-config-manager,可用来管理yum源
yum install -y yum-utils

# 添加yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 更新索引
yum makecache

# 安装
yum install -y docker-ce

# 启动
systemctl start docker

# 验证安装成功
docker info

# 开机自启动
systemctl enable docker

为docker配置镜像源

# 首先查看是否有镜象源的配置
cat /etc/docker/daemon.json

如果没有镜像源的配置,那就生成

# 新建该文件
vim /etc/docker/daemon.json

# 输入镜像
{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn",
  				"{阿里云镜像}",# https://help.aliyun.com/document_detail/60750.html
		       "https://registry.docker-cn.com",
  		       "http://hub-mirror.c.163.com" ]
}

# 加载并重启
systemctl daemon-reload && systemctl restart docker

重启后再次输入docker info,可以看到最下面输出了可以用的mirrors
在这里插入图片描述

2. 安装Mysql

1.下载mysql镜像文件

docker pull mysql:5.7

2. 创建实例并启动

docker run -p 3306:3306 --name mysql \ # 将容器的 3306 端口映射到主机的 3306 端口
-v /mydata/mysql/log:/var/log/mysql \ # 将配置文件夹挂载到主机
-v /mydata/mysql/data:/var/lib/mysql \ # 将日志文件夹挂载到主机
-v /mydata/mysql/conf:/etc/mysql \ # 将配置文件夹挂载到主机
-e MYSQL_ROOT_PASSWORD=root \ # 初始化 root 用户的密码
-d mysql:5.7

上述命令在ubuntu 20.3下可能会报错找不到conf,因此修改成如下命令

docker run -p 3306:3306 --name mysql \
-v /mydata/mysql/log:/var/log/mysql \
-v /mydata/mysql/data:/var/lib/mysql \
-v /mydata/mysql/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7

可能的解决方案
mysqld failed while attempting to check config解决方法
mysql命令运行报错:Can‘t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock‘
MySQL 报错 [ERROR] [FATAL] InnoDB: Table flags are 0 in the data dictionary but the flags in file
Docker部署Mysql8.0报错 Access denied for user ‘root‘@‘localhost‘ (using password: YES)

测试是否启动成功:使用root作为-u和-p的参数登陆进去

docker exec -it mysql mysql -uroot -proot

如果要远程连接,要修改root的密码

use mysql;
select user,host from user;
ALTER USER 'root'@'%' IDENTIFIED BY '996'; -- 这里一定要改成复杂密码

开放端口测试通过后,新建用户,用来存放后续的数据库

3. 配置MySQL my.cnf文件
由于上述命令设置了配置文件夹挂载到主机,因此不管是在/mydata/mysql/log做的修改还是在/var/log/mysql做的修改都会双向同步

# 新建文件
vim /mydata/mysql/conf/my.cnf

# 写入配置
[client] 
default-character-set=utf8
[mysql] 
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci' 
init_connect='SET NAMES utf8'
character-set-server=utf8 
collation-server=utf8_unicode_ci 
skip-character-set-client-handshake
skip-name-resolve # 解决 MySQL 连接慢的问题 # 跳过域名解析


# 重启mysql
docker restart mysql

修改密码

3. 安装redis

1. 下载镜像文件

docker pull redis

2. 创建实例并启动

# 先执行配置文件的建立
mkdir -p /mydata/redis/conf
touch /mydata/redis/conf/redis.conf

# 如果不完成上一步,这一步就会找不到redis.conf
docker run -p 6379:6379 --name redis \
 -v /mydata/redis/data:/data \
 -v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
 -d redis redis-server /etc/redis/redis.conf

3. 使用redis-cli检查是否安装成功

docker exec -it redis redis-cli

4. 通过redis配置文件,设置持久化

# 编辑redis.conf
vim  /mydata/redis/conf/redis.conf

# 写入AOS持久化方式
appendonly yes

之前不持久化,重启redis后,数据会从内存丢失,现在不会了

# 进入
docker exec -it redis redis-cli

# 设置值
set aa bb
get aa

# 推出并重启
exit
docker restart redis

# 再次进入
docker exec -it redis redis-cli
get aa
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值