docker部署redis6

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

环境:centos 7
redis:6.2.14
docker:20.10.9

1.下载 redis 镜像

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

docker pull redis:6.2.14-alpine

然后导出:

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 文件拷贝到离线服务器,然后导入:

# 导入镜像
docker load -i redis-6.2.14.tar
# 查看镜像
docker images

在这里插入图片描述
此时则是导入镜像成功

3.docker运行 redis 服务

在run之前,先建一个普通用户,因为一般处于安全考虑,redis需要使用普通用户运行,不能使用root。
创建用户方法,网上很多方法,下面只是一个示例(以redisuser 为例,名字自行取)

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

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

id redisuser

假如 redisuser 的id 跟gid 都为 1000(根据实际显示)
那么,运行命令增加参数 --user 1000:1000

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

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 运行命令:

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.检验是否部署成功

docker ps -a

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

# 查看端口6379
netstat -tunlp | grep 6379

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

docker logs -f redis6

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

  • 报 /data/log 无权限问题

在这里插入图片描述

这时重新给赋值权限

chown -R redisuser:redisuser data
# 重启redis
docker restart redis6

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

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

docker exec -it redis6 redis-cli

在这里插入图片描述
为了更好的检验部署情况,建议在另外一台机子(或本机也行)使用 redis-cli 对其连接。
只安装redis-cli 的方式(来自网上)

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

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

5. 其他问题

  • redis.conf 如何配置几个关键地方
    requirepass:配置密码(等保要求,密码是必需的)
    bind:原来是bind 127.0.0.1 -::1 ,可能连接时会出现报错 Connection reset by peer,于是改成bind * -::* 或者 bind 0.0.0.0

  • redis.conf 获取方式
    从源码里面拿出来,例如6.2.14版本源码地址:
    https://download.redis.io/releases/redis-6.2.14.tar.gz
    所有发布版本:https://download.redis.io/releases/
    最新的稳定版:
    https://download.redis.io/redis-stable/redis.conf

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/137540.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

卡牌游戏类型定制开发微信卡牌小程序游戏

卡牌类型的游戏开发具有一些独特的特点和挑战,以下是一些主要的特点: 卡牌设计和平衡:卡牌游戏的核心是卡牌设计和平衡。开发团队需要设计各种卡牌,确保它们在游戏中相互平衡,以便提供有趣的游戏体验。卡牌的特性、效…

服务器数据恢复—误还原虚拟机快照后如何恢复之前的数据?

服务器数据恢复环境: vmfs文件系统,存放的是SqlServer数据库及其他办公文件。 服务器故障: 工作人员误操作还原快照,导致了SqlServer数据库数据丢失。 服务器数据恢复过程: 1、拿到故障服务器的所有磁盘后&#xff0c…

Unity 一些内置宏定义

在Unity中,有一些内置的宏定义可用于不同的平台。以下是一些常见的平台内置宏定义: 1、UNITY_EDITOR:在Unity编辑器中运行。 2、UNITY_EDITOR_WIN:在Unity编辑器运行在Windows操作系统时被定义。 3、UNITY_STANDALONE&#xff1a…

ansible-第二天

ansible 第二天 以上学习了ping、command、shell、script模块,但一般不建议使用以上三个,因为这三个模块没有幂等性。举例如下: [rootcontrol ansible]# ansible test -a "mkdir /tmp/1234"[WARNING]: Consider using the file …

【Python大数据笔记_day05_Hive基础操作】

一.SQL,Hive和MapReduce的关系 用户在hive上编写sql语句,hive把sql语句转化为MapReduce程序去执行 二.Hive架构映射流程 用户接口: 包括CLI、JDBC/ODBC、WebGUI,CLI(command line interface)为shell命令行;Hive中的Thrift服务器允许外部客户端…

大文件传输小知识 | UDP和TCP哪个传输速度快?

在网络世界中,好像有两位“传输巨头”常常被提起:UDP和TCP。它们分别代表着用户数据报协议和传输控制协议。那么它们是什么?它们有什么区别?它们在传输大文件时的速度又如何?本文将深度解析这些问题,帮助企…

基于SSM的课程管理系统

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

git 生成公钥

1、通过命令 ssh-keygen 生成 SSH Key: ssh-keygen -t ed25519 -C "Gitee SSH Key" 三次回车 2、查看生成的 SSH 公钥和私钥: ls ~/.ssh/ 3、把公钥设置到git id_ed25519.pub 4、测试 ssh -T gitgitee.com 成功!!&…

GPT-4 Turbo 发布 | 大模型训练的新时代:超算互联网的调度与调优

★OpenAI;ChatGPT;Sam Altman;Assistance API;GPT4 Turbo;DALL-E 3;多模态交互;算力调度;算力调优;大模型训练;GH200;snowflake;AGI;A…

【算法 | 数论 No.1】AcWing1246. 等差数列

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【手撕算法系列专栏】【AcWing算法提高学习专栏】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程&a…

10. GPIO中断

10. GPIO中断 回顾stm32中断系统STM32中断向量表中断向量偏移NVIC中断控制器 Cortex_A7 中断系统中断向量表GIC控制器中断IDGIC逻辑分块CP15协处理器c0寄存器c1寄存器c12寄存器c15寄存器 中断使能中断优先级设置优先级数配置 GICC_PMR抢占优先级和子优先级位数设置 GICC_BPR优先…

服务器往客户端发送字符串的网络编程

服务器主要就是能够打开命令行提供的网络端口&#xff0c;然后一有客户端连接上&#xff0c;就会向客户端发送Welcome to Our Server!这段话。 服务器代码serverSayWelcome.c的代码如下&#xff1a; #include <stdio.h> #include <stdlib.h> #include <string.…

[LeetCode]-225. 用队列实现栈

目录 225. 用队列实现栈 题目 ​思路 代码 225. 用队列实现栈 225. 用队列实现栈 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/implement-stack-using-queues/description/ 题目 请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff0…

一文6个步骤带你实现接口测试入门!

一、接口测试概述 1 什么是接口测试&#xff1a; 接口测试是测试系统组件间交互的一种测试。接口测试主要用于检测外部系统与系统之间&#xff0c;内部各个子系统之间的交互点。测试的重点是要检查数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及系统间的相互逻辑…

WebGL-Vue3-TS-Threejs:基础练习 / Javascript 3D library / demo

一、理解Three.js Three.js是一个用于WebGL渲染的JavaScript库。它提供了一组工具和类&#xff0c;用于创建和渲染3D图形和动画。简单理解&#xff08;并不十分准确&#xff09;&#xff0c;Three.js之于WebGL&#xff0c;好比&#xff0c;jQuery.js之于JavaScript。 OpenGL …

在Google Kubernetes集群创建分布式Jenkins(二)

上一篇博客在Google Kubernetes集群创建分布式Jenkins(一)-CSDN博客我介绍了如何在GCP的K8S集群上部署一个分布式的Jenkins&#xff0c;并实现了一个简单的Pipeline的运行。 在实际的开发中&#xff0c;我们通常都会按照以下的CICD流程来设置Pipeline 在我司的实际实践中&…

ubuntu18-recvfrom接收不到广播报文异常分析

目录 前言 一、UDP广播接收程序 二、异常原因分析 总结 前言 在ubuntu18.04系统中&#xff0c;编写udp接收程序发现接收不到广播报文&#xff0c;使用抓包工具tcpdump可以抓取到广播报文&#xff0c;在此对该现象分析解析如下文所示。 一、UDP广播接收程序 UDP广播接收程序如…

接收表单数据

如果您尝试按下提交按钮&#xff0c;浏览器将显示“Method Not Allowed”错误。这是因为到目前为止&#xff0c;前一节中的登录视图函数完成了一半的工作。它可以在网页上显示表单&#xff0c;但是还没有逻辑来处理用户提交的数据。这是Flask-WTF使工作变得非常简单的另一个领域…

实战!工作中常用的设计模式

文章目录 前言一、策略模式1.1、 业务场景1.2 、策略模式定义1.3、 策略模式使用1.3.1、一个接口&#xff0c;两个方法1.3.2、不同策略的差异化实现1.3.3、使用策略模式 二、责任链模式2.1、业务场景2.2、责任链模式定义2.3、责任链模式使用2.3.1、一个接口或者抽象类2.3.2、每…

【springboot配置项动态刷新】与【yaml文件转换为java对象】

文章目录 一&#xff0c;序言二&#xff0c;准备工作1. pom.xml引入组件2. 配置文件示例 三&#xff0c;自定义配置项动态刷新编码实现1. 定义自定义配置项对象2. 添加注解实现启动时自动注入3. 实现yml文件监听以及文件变化处理 四&#xff0c;yaml文件转换为java对象1. 无法使…