一、前言
Redis官方下载地址:
https://redis.io/download/#redis-downloads
Docker Hub官方网址:
https://hub.docker.com/
【关联博客教程】
最新Docker在Centos7下安装部署(参考官方教程文档)
写最好的最新稳定版Redis7(redis-7.0.5)在云服务器Centos7安装部署教程(参考官方文档)
写最好的最新Redis6(redis-6.2.7)在云服务器Centos7安装部署教程(参考官方文档)
Docker安装最新稳定版Redis7(redis-7.0.5)(参考官方文档)
本教程参考官方文档在Docker中安装最新稳定版Redis-6.2.7,官方文档有些细节没有说明,笔者因此踩了不了坑。
本文由 @大白有点菜 原创,请勿盗用,转载请说明出处!如果觉得文章还不错,请点点赞,加关注,谢谢!
二、安装部署
1、如何查看Docker Hub中Redis最新稳定的版本
(1)浏览Docker Hub网址,即Docker的仓库,搜索关键字 redis 查找redis的版本(和官方redis的版本是同步的)。或者直接进入对应页面 https://hub.docker.com/_/redis
(2)点击第一个,进入到 Redis 相关页面,包括一些 版本介绍
和 安装教程
(在页面的下半部分)。页面介绍中,在同一行的,例如 6.2.7, 6.2, 6, 6.2.7-bullseye, 6.2-bullseye, 6-bullseye ,其实是同一个版本。
(3)“Tags”标签页面列出了具体的版本,可以复制指令,手写指令的一定要加版本号(6.2.7),不然拉取的就是最新版本,即Redis7。
2、创建两个目录,挂载为容器的卷(Volume),conf为配置文件目录,data为数据目录。
mkdir -p /mydata/redis/conf
mkdir -p /mydata/redis/data
什么是卷(Volume)?命令 docker -v
中的“-v
”就是这个卷,“-v
”只是“--volume
”的简写。
Docker官方文档解释卷
的含义:https://docs.docker.com/storage/volumes/
来几张原文截图
,并附上谷歌翻译后的截图
:
3、拉取Redis-6.2.7镜像。
docker pull redis:6.2.7
4、创建Redis容器
(1)官方文档教程并没有这一步,但有提到 redis.conf 配置文件,redis.conf 从何而来呢?
笔者经过研究,解决了这个问题。先从Redis官网下载最新Redis-6.2.7的源码包,解压出来,在 redis-6.2.7 目录里面复制 redis.conf 配置文件到 /mydata/redis/conf 目录下。
1)下载 redis-6.2.7.tar.gz 源码包。
wget https://download.redis.io/releases/redis-6.2.7.tar.gz
2)解压 redis-6.2.7.tar.gz 。
tar -xzf redis-6.2.7.tar.gz
3)复制 redis-6.2.7
目录下的 redis.conf
到 /mydata/redis/conf
目录下。
cp redis-6.2.7/redis.conf /mydata/redis/conf/
4)更改 /mydata/redis 目录下所有文件的权限为可读可写可执行。
chmod 777 -R /mydata/redis
5)删除 redis-6.2.7.tar.gz 源码包 和 解压出来的 redis-6.2.7 程序目录。
rm -rf redis-6.2.7*
(2)创建并运行容器。容器名为 redis
,映射端口 6379
,挂载配置目录 /mydata/redis/conf
,挂载数据目录 /mydata/redis/data
,redis-server
以配置文件 redis.conf
启动。注意:参数 -d 后面的 redis 需要加上版本号(6.2.7) 。
docker run --name redis -p 6379:6379 -v /mydata/redis/conf:/usr/local/etc/redis -v /mydata/redis/data:/data -d redis:6.2.7 redis-server /usr/local/etc/redis/redis.conf
5、运行 redis-cli 测试连接 redis-server。如图,说明Redis容器配置正确。指令 exit 代表退出连接。
docker exec -it 88c redis-cli
6、设置容器自启动。
docker update --restart=always redis
7、容器的启动、停止、删除、重新启动、查看运行状态。
(1)启动容器
docker start redis
或
docker start 容器ID
(2)停止容器
docker stop redis
或
docker stop 容器ID
(3)删除容器
docker rm redis
或
docker rm 容器ID
(4)重新启动容器
docker restart redis
或
docker restart 容器ID
(5)查看容器运行状态
- 查看所有容器的运行状态,
包括运行的和停止的
:
docker ps -a
- 查看所有运行中的容器的状态,
不包括停止的
:
docker ps
三、配置修改
1、前面使用 redis-cli 去连接 redis-server,是能正常连接的,但是,使用第三方可视化工具 RESP
(旧版叫 Redis Desktop Manager
),却无法远程连接,为什么会这样子呢?因为,Redis默认只允许本地连接,经过笔者验证,如果要远程连接,就需要同时修改配置文件 redis-conf
的 bind
和 requirepass
这两个参数值,缺一不可。对应的数据目录 dir
参数值也要修改。
2、修改 redis.conf 配置文件(两种方式)。
(1)编辑 redis.conf 文件。
vim /mydata/redis/conf/redis.conf
(2)方法一修改参数值。注意
:6379.conf 配置文件有2053行,要找到指定参数位置不方便,可以通过行号快速跳转。要想了解如何设置显示行号和跳转,请参考教程【Linux中vim编辑文件显示行号(临时和永久两种方式)】和【Linux中vim编辑文件跳转指定的行和列】。此处有个操作小技巧
:按 i
键进入到编辑模式,修改内容后,再按 Esc
键切换到正常模式,输入 ngg
跳转到第n行(n代表行号
),例如跳转到第66行,即 66gg ,继续按 i 键进入到编辑模式修改下一部分内容。最后记得输入 :wq
保存并退出。
行号 75
,原内容【bind 127.0.0.1 -::1】。默认只支持 redis-cli 本地连接 redis-server ,不支持远程连接,例如第三方工可视化具 RESP(旧版叫 Redis Desktop Manager)。【支持远程连接参数值修改如下】
。
bind * -::*
行号 456
,原内容【dir ./】。【这个参数修改为要存放的数据目录】
。
dir /data
行号 903
,原内容【# requirepass foobared】。给默认用户设置密码,主要是使用 redis-cli 连接 redis-server时,需要通过密码校验。配置文件默认是注释这个参数的,代表无密码连接。使用第三方可视化工具 RESP 去连接Redis,肯定要设置Redis用户密码。此处 123456 密码过于简单,不建议这么做,很不安全。【此处参数修改为指定的密码】
。
requirepass 123456
(3)方法二修改参数值。使用sed替换配置文件 /mydata/redis/conf/redis.conf
中参数默认的值。反斜杠“\
”代表转义符,即将某些特殊字符转义。
sed -i 's/bind 127.0.0.1 -::1/bind * -::*/' /mydata/redis/conf/redis.conf
sed -i 's/dir \.\//dir \/data/' /mydata/redis/conf/redis.conf
sed -i 's/\# requirepass foobared/requirepass 123456/' /mydata/redis/conf/redis.conf
3、重启容器并使用RESP连接测试。
docker restart redis