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服务器允许外部客户端…

Debian 9 Stretch APT问题

Debian 9 Stretch APT问题 flyfish 操作系统 Debian 9 Stretch 错误提示 使用sudo apt update错误提示 Ign:1 http://mirrors.aliyun.com/debian stretch InRelease Ign:2 http://mirrors.aliyun.com/debian-security stretch/updates InRelease Ign:3 http://mirrors.al…

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

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

基于SSM的课程管理系统

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

java 代理模式(静态代理、动态代理、JDK动态代理、CGLIB动态代理)详解

代理模式 简单说:我们使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标对象的功能。 主要作用是:扩展目标对象的功能,比如说在目标对…

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优先…

常用SQL——row_number()介绍

算法工程师日常用sql处理特征,row_number()可以适用的场景如下: 1、需要把多行数据按照某个字段score降序排序,并且新增一个字段作为排序序号,具体用法示例如下: row_number() OVER (ORDER BY score DESC) AS ro_no …

【SA8295P 源码分析 (一)】119 - QNX 中如何在代码中快速配置 TLMM_GPIO 或 PMIC_GPIO 中断 及 中断回调函数

【SA8295P 源码分析】119 - QNX 中如何在代码中快速配置 TLMM_GPIO 或 PMIC_GPIO 中断 及 中断回调函数 一、配置 TLMM GPIO15 中断示例代码二、配置 PMIC2 GPIO1 中断示例代码三、easy_irq 实现源码分析3.1 struct _easy_irq_ctx 结构体内容分析3.2 register_easy_irq_callbac…

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

服务器主要就是能够打开命令行提供的网络端口&#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…

使用Go语言搭建区块链基础

引言 随着区块链技术的发展&#xff0c;越来越多的人开始关注并使用这一技术&#xff0c;其中&#xff0c;比特币和以太坊等区块链项目正在成为人们关注的焦点。而Go语言作为一种高效、简洁的编程语言&#xff0c;越来越多的区块链项目也选择使用Go语言来搭建其底层基础。本文…

Kotlin学习笔记-Kotlin基础-01

变量声明 var&#xff1a;用于值不改变的变量&#xff0c;使用val声明的变量无法重新赋值 val&#xff1a;用于值可以改变的变量 变量声明格式 var/val data(变量名称) : Int(变量类型) Kotlin基本数据类&#xff1a; Int、Byte、Short、Long、Float、Double Kotlin类型推…

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

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