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" ),在此记录一下,下次探索如何集群部署

相关推荐
容器魔方2 小时前
中选名单出炉|18位学生入选开源之夏KubeEdge课题,欢迎加入!
云原生·容器·云计算
保持学习ing2 小时前
day1--项目搭建and内容管理模块
java·数据库·后端·docker·虚拟机
susu10830189113 小时前
Debian 11 Bullseye 在线安装docker
运维·docker·debian
傲祥Ax4 小时前
Redis总结
数据库·redis·redis重点总结
love530love4 小时前
Docker 稳定运行与存储优化全攻略(含可视化指南)
运维·人工智能·windows·docker·容器
人生匆匆4 小时前
docker进入启动失败的容器
运维·docker·容器
退役小学生呀6 小时前
十、K8s集群资源合理化分配
linux·云原生·容器·kubernetes·k8s
魂尾ac8 小时前
Centos Docker 安装(100%成功)
linux·docker·centos
都叫我大帅哥10 小时前
Redis AOF持久化深度解析:命令日志的终极生存指南
redis
都叫我大帅哥10 小时前
Redis RDB持久化深度解析:内存快照的魔法与陷阱
redis