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 小时前
CentOS7安装docker
docker·云原生·centos
小代码20162 小时前
loki 环境搭建
spring boot·docker·log4j·grafana
rchmin4 小时前
Redis BitMap介绍及使用场景示例
数据库·redis·缓存
我爱学习好爱好爱4 小时前
Prometheus监控栈 监控docker和进程
docker·容器·prometheus
hhzz4 小时前
Docker 搭建 NextCloud + OnlyOffice 完整教程(Linux Centos7系统)
linux·docker·容器·onlyoffice·nextcloud
雪碧聊技术4 小时前
基于Redis的分布式锁
数据库·redis·分布式
是娇娇公主~5 小时前
Redis 悲观锁与乐观锁
linux·redis·面试
一条闲鱼_mytube5 小时前
CI/CD: TektonCI 深入浅出教程
容器·kubernetes·tekton
记得开心一点嘛5 小时前
k8s部署微服务项目
微服务·容器·kubernetes
勇气要爆发6 小时前
Docker:软件开发的“标准集装箱”
运维·docker·容器