docker部署redis6

前言:在离线服务器上(无联网),部署redis的方式,采用docker是比较方便的。下面将描述如何使用docker部署单机版redis

环境:centos 7
redis:6.2.14
docker:20.10.9

1.下载 redis 镜像

找一台可以上网的机子,拉取 redis 镜像,本次选取了 redis:6.2.14-alpine

sh 复制代码
docker pull redis:6.2.14-alpine

然后导出:

sh 复制代码
docker save redis:6.2.14-alpine -o redis-6.2.14.tar

文件大小比较小,不需要导出压缩,压缩导出命令则是:

docker save redis:6.2.14-alpine | gzip > redis-6.2.14.tar.gz

对应的解压导入则是gunzip -c redis-6.2.14.tar.gz | docker load
注意:这两行命令忽略,暂不做压缩导出导入,仅提供参考

2.导入redis镜像

将导出的redis-6.2.14.tar 文件拷贝到离线服务器,然后导入:

sh 复制代码
# 导入镜像
docker load -i redis-6.2.14.tar
# 查看镜像
docker images

此时则是导入镜像成功

3.docker运行 redis 服务

在run之前,先建一个普通用户,因为一般处于安全考虑,redis需要使用普通用户运行,不能使用root。

创建用户方法,网上很多方法,下面只是一个示例(以redisuser 为例,名字自行取)

sh 复制代码
# 创建普通用户
useradd redisuser
# 如果还想要登录,则给其设置密码
# passwd redisuser
# 创建同名用户组(创建用户时可能同时自动创建同名组了)
groupadd redisuser
# 将用户加入用户组
usermod -aG redisuser redisuser
# 把 redisuser 加入docker组
gpasswd -a redisuser docker

此时创建普通用户完毕,则查看该用户 redisuser 的 id

sh 复制代码
id redisuser

假如 redisuser 的id 跟gid 都为 1000(根据实际显示)

那么,运行命令增加参数 --user 1000:1000

在 /home/redisuser/common/redis 下面(路径根据实际,这个路径是本次使用),创建2个文件夹,data 和 conf,并赋所属

sh 复制代码
cd /home/redisuser/common/redis
mkdir data
mkdir conf
# 注意:将redis.conf 文件拷贝至 conf 下面
# cp redis.conf conf/
# 文件夹属性改为之前建的普通用户
chown -R redisuser:redisuser data
chown -R redisuser:redisuser conf

docker 运行命令:

sh 复制代码
docker run --name redis6 --restart=always -p 6379:6379 --user 1000:1000 --sysctl net.core.somaxconn=1024 -e TZ="Asia/Shanghai" -v /home/redisuser/common/redis/conf:/etc/redis -v /home/redisuser/common/redis/data:/data -d redis:6.2.14-alpine redis-server /etc/redis/redis.conf

4.检验是否部署成功

sh 复制代码
docker ps -a

看是否正常状态,或者看端口是否存在

sh 复制代码
# 查看端口6379
netstat -tunlp | grep 6379

如果失败或者端口不存在,先看看能不能查到日志

sh 复制代码
docker logs -f redis6

根据实际情况想相应的调整。例如本次遇到的一个个问题:

  • 报 /data/log 无权限问题

这时重新给赋值权限

sh 复制代码
chown -R redisuser:redisuser data
# 重启redis
docker restart redis6

其他报错,则只能网上搜索解决方案,见招拆招。

没有报错了之后,这时可以试着用redis容器自带的 redis-cli 连一下

sh 复制代码
docker exec -it redis6 redis-cli

为了更好的检验部署情况,建议在另外一台机子(或本机也行)使用 redis-cli 对其连接。

只安装redis-cli 的方式(来自网上)

sh 复制代码
wget http://download.redis.io/redis-stable.tar.gz 
tar -xzvf redis-stable.tar.gz
cd redis-stable
make
# 将生成的 redis-cli 放到可执行目录 /usr/local/bin/
cp src/redis-cli /usr/local/bin/
chmod +x /usr/local/bin/redis-cli

加入原来redis部署的机器的ip是192.68.1.3

sh 复制代码
redis-cli -h 192.68.1.3 -p 6379
# 如果找不到命令redis-cli,则使用以下命令
/usr/local/bin/redis-cli -h 192.68.1.3 -p 6379

5. 其他问题

小结:至此,docker单机版redis已经部署完毕,踩了一些坑( 如 "Connection reset by peer" ),在此记录一下,下次探索如何集群部署

相关推荐
Lucis__9 小时前
Redis持久化机制解析
redis·缓存·操作系统·文件·非关系型数据库·1024程序员节
用户0942485680312 小时前
第7章:Redis有序集合 ZSet 实战:排行榜与延时任务
redis·架构·源码
码士集团小青13 小时前
面霸篇:高频 Java 基础问题(核心卷一)
linux·服务器·数据库·redis·缓存·1024程序员节
2301_322414280413 小时前
springboot农产品交易平台的设计与实现08055-计算机毕设 原创(免费领源码+部署教程+开发环境)
java·spring boot·redis·mysql·tomcat·maven·mybatis
乐茵lin13 小时前
Redis 持久化机制详解:RDB 与 AOF
redis·bootstrap·mybatis
一条泥憨鱼15 小时前
【Redis | 黑马点评】附近商铺功能源码解读
数据库·redis·缓存
舰长11515 小时前
将百万数据插入到 Redis,有哪些实现方案?
数据结构·redis·开源
Java开发追求者15 小时前
windows快速安装docker
windows·docker·安装·1024程序员节
bksczm17 小时前
Redis数据结构之hash
数据结构·redis·哈希算法·1024程序员节
骑着蜗牛撵大象32717 小时前
飞牛fnOS部署Damselfly:Compose编排、照片目录与7100固定访问
java·docker·rpc·dubbo·fnos·照片管理·damselfly