当前位置: 首页 > news >正文

图文详解Docker下配置、测试Redis

文章目录

  • 前言
      • 实测环境:
      • 实验思路:
  • 正文
      • 1.准备工作
      • 2. 配置、运行 Redis 容器
      • 3. 配置测试
  • 总结


前言

配置、测试redis数据库服务器,首先确保正确安装docker,并且已启动运行,具体安装docker方法见笔者前面的博文《OpenEuler 下 Docker 安装、配置与测试实例》。,具体安装redis方法见《详解Docker下 安装和运行 Redis》。

实测环境:

1、宿主机win10,谷歌浏览器,IP地址为192.168.157.1
2、VMware Workstation pro17
3、安装1个虚拟机OpenEuler 24.03,IP地址为192.168.157.128
4、xshell7
5、Redis Desktop Manager 2020.20.0软件

实验思路:

1、前期准备工作较多,首先完成redis客户端工具软件Redis Desktop Manager的下载安装;其次,在宿主机完成必要的目录创建,为目录挂载做准备;最后,在宿主机下载redis的安装包,拷贝redis的配置文件redis.conf,修改该配置文件,目的是docker容器挂载宿主机的配置文件,redis服务启动时,需要读取配置文件redis.conf,实现正常的服务启动和运行。
2、Xshell下设置容器与宿主机的端口映射,以及目录挂载,运行容器化redis。
3、Docker内部测试Redis
4、win10下载Redis Desktop Manager 软件,安装、登录Docker Redis,
命令行测试数据库。
测试Redis数据库访问示意图:
在这里插入图片描述

正文

1.准备工作

(1)宿主机创建目录,为挂载docker内部目录做准备。

mkdir ~redis                       //保存配置文件
mkdir ~/redis/data                 //保存redis数据库数据

(2)拷贝配置文件

docker inspect redis003

找到redis安裝包,如圖所示;
在这里插入图片描述
使用wget命令,下载该安装包:

wget http://download.redis.io/releases/redis-7.4.1.tar.gz

解压安装包至/opt目录下

tar -rvf redis-7.4.1.tar.gz

复制redis.conf配置文件至/redis目录下,vim打开redis.conf,修改如下命令行:

#bind 127.0.0.1 -::1  
protected-mode no
daemonize no
appenedonly yes

下面是对每一行的注释说明:

# 注释掉改行,解除redis只能本地访问的限制
#bind 127.0.0.1 -::1  # 设置 protected-mode 为 no,关闭 Redis 的保护模式。
# 在保护模式下,Redis 会拒绝来自非本地接口的连接请求,除非明确允许。
# 关闭保护模式后,Redis 将接受来自任何网络接口的连接,这可能会带来安全风险。
protected-mode no# 设置 daemonize 为 no,禁止 Redis 以守护进程模式运行。
# 守护进程模式下,Redis 会在后台运行,不占用控制台。
# 设置为 no 意味着 Redis 将在前台运行,并在控制台显示日志信息。
daemonize no# 设置 appendonly 为 yes,开启 Redis 的 AOF(Append Only File)持久化。
# AOF 持久化会记录每个写操作到一个日志文件中,以便在 Redis 重启时重播这些操作来恢复原始数据集。
# 这提供了更高的数据安全性,但可能会稍微降低性能。
appendonly yes

配置完成后,不要忘记!wq保存配置。

2. 配置、运行 Redis 容器

docker run --restart=always --privileged=true --name redis003  \
-v  /redis/redis.conf:/etc/redis/redis.conf  \
-v  /redis/data:/data  \
-p 6380:6379 \
-d redis redis-server /etc/redis/redis.conf

以下是 Docker 配置命令的详尽注释说明:

docker run \# --restart=always 参数设置容器的重启策略为 always,意味着无论容器因何种原因退出,Docker 都会自动重启它。--restart=always \# --privileged=true 参数给予容器特权模式,这允许容器内运行的进程获得宿主机上的所有权限。--privileged=true \# --name redis003 为新创建的容器指定一个名称,这里名称为 redis003。--name redis003 \# -v 参数用于挂载卷,将宿主机的 /redis/redis.conf 文件挂载到容器的 /etc/redis/redis.conf 文件。-v  /redis/redis.conf:/etc/redis/redis.conf \# 另一个 -v 参数,将宿主机的 /redis/data 目录挂载到容器的 /data 目录,用于数据持久化。-v  /redis/data:/data \# -p 参数用于端口映射,将容器的 6380 端口映射到宿主机的 6379 端口,这样宿主机上的 6379 端口可以访问容器中的 Redis 服务。-p 6380:6379 \# -d 参数让 Docker 在后台运行容器。-d \# redis 是要使用的镜像名称,这里指定使用 redis 镜像。redis \# redis-server 是 Redis 镜像中包含的可执行文件,用于启动 Redis 服务。# /etc/redis/redis.conf 是启动 Redis 服务时使用的配置文件路径。redis-server /etc/redis/redis.conf

这个命令创建了一个名为 redis003 的 Redis 容器,设置了自动重启策略,赋予了容器特权模式,并将宿主机上的配置文件和数据目录挂载到容器中,以便容器可以使用这些配置和持久化数据。容器的 6379端口被映射到宿主机端口6380,最后容器在后台运行。
思考:
1、目录挂载,容器内是否也要手动创建相应的目录?
2、端口映射,这里宿主机的端口与容器的端口为什么不一致?

3. 配置测试

1、Docker内部测试redis
执行docker exec命令,在容器内测试redis:

docker exec -it redis002 redis-cli
set computer  "Lenovo"
get computer

执行效果如图所示:
在这里插入图片描述
2、外部测试redis
执行Redis Desktop Manager客户端软件,设置访问redis的IP地址与端口,如图所示:
在这里插入图片描述
单击“确定”按钮,连接redis数据库成功,在右侧窗口,输入命令,测试数据库是否工作正常,如图所示:
在这里插入图片描述
使用set、get命令,正常字符串的数据库操作。

总结

Docker完成redis的配置、测试,步骤较复杂,涉及的知识面也较多,首先要对redis数据库有一定的学习基础,其次,可以在单机环境安装配置redis,熟悉redis数据库特点,再在docker环境下安装配置、测试,方能得心应手。
思考题参考答案:
1、目录挂载,容器内是否也要手动创建相应的目录?
答:在使用Docker挂载宿主机目录到容器时,通常不需要在容器内部事先创建目标目录。当你使用docker run命令并指定-v--mount参数来挂载宿主机的目录到容器时,Docker会自动创建容器内的目标目录,如果它不存在的话。
2、端口映射,这里宿主机的端口与容器的端口为什么不一致?
容器的 6379端口被映射到宿主机端口6380,因为宿主机已有6379端口,避免端口冲突。

相关文章:

图文详解Docker下配置、测试Redis

文章目录 前言实测环境:实验思路: 正文1.准备工作2. 配置、运行 Redis 容器3. 配置测试 总结 前言 配置、测试redis数据库服务器,首先确保正确安装docker,并且已启动运行,具体安装docker方法见笔者前面的博文《OpenEu…...

Python编程艺术:优雅与实用的完美平衡(推导式)

在Python这门优雅的编程语言中,处处体现着"简洁即是美"的设计哲学。今天我们深入探讨Python中那些让代码更优雅、更高效的编程技巧,这些技巧不仅能提升代码的可读性,还能让编程过程充满乐趣。 列表推导式的魔力 Python的列表推导…...

Spring Boot框架Starter组件整理

在Spring Boot框架中,starter是一种预定义的依赖集合,旨在简化Maven或Gradle等构建工具中的依赖管理。每个starter都包含了实现特定功能所需的库和组件,以及相应的配置文件。开发者只需在项目中引入相应的starter依赖,即可快速搭建…...

C/C++基础知识复习(27)

1) 移动语义和拷贝语义的区别 拷贝语义和移动语义是C中对象所有权管理的两种机制,主要在对象初始化、赋值或传参时体现。 拷贝语义 (Copy Semantics) 行为:通过深拷贝或浅拷贝,创建一个新对象,并将原对象的值或资源复制到新对象…...

IEC61850实现方案和测试-2

IEC61850实现方案和测试-1作为介绍实现方案和测试的第二篇文章,后续会继续更新,欢迎关注。 第一篇是:IEC61850实现方案和测试-1-CSDN博客 UCA详细测试用例下载: 链接: https://pan.baidu.com/s/1TTMlYRfzKITgrkWwwtcrDg 提取码:…...

flume-将日志采集到hdfs

看到hdfs大家应该做什么? 是的你应该去把集群打开, cd /export/servers/hadoop/sbin 启动集群 ./start-all.sh 在虚拟机hadoop02和hadoop03上的conf目录下配置相同的日志采集方案,‘ cd /export/servers/flume/conf 切换完成之后&#…...

一文学习开源框架LeakCanary

LeakCanary 简介 LeakCanary 是一个由 Square 开发的开源工具,主要用于检测和诊断 Android 应用中的内存泄漏问题。它通过自动化的方式帮助开发者捕捉和分析可能导致内存泄漏的对象,简化了内存问题的排查过程。 LeakCanary 的功能 自动检测内存泄漏&a…...

jetson orin系列开发版安装cuda的gpu版本的opencv

opencv安装包下载地址: https://github.com/opencv/opencv/扩展库下载地址: https://github.com/opencv/opencv_contrib1. 删除jetpack包中的opencv版本 原先的opencv库安装在目录/usr/lib/aarch64-linux-gnu/下(一般其他的第三方库也都安…...

数据结构-8.Java. 七大排序算法(中篇)

本篇博客给大家带来的是排序的知识点, 由于时间有限, 分两天来写, 中篇主要实现后三种排序算法: 冒泡排序,快速排序,下一篇讲 归并排序. 文章专栏: Java-数据结构 若有问题 评论区见 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作…...

数据结构C语言描述4(图文结合)--栈的实现,中序转后序表达式的实现

前言 这个专栏将会用纯C实现常用的数据结构和简单的算法;有C基础即可跟着学习,代码均可运行;准备考研的也可跟着写,个人感觉,如果时间充裕,手写一遍比看书、刷题管用很多,这也是本人采用纯C语言…...

python基本数据类型 -- 元组tuple

在 Python 中,元组(Tuple)是一种轻量级的、不可变的数据结构。与列表类似,元组用于存储有序的数据集合,但它一旦创建,其内容就无法更改。这种特性让元组在某些场景下更加安全和高效。本文将从定义、操作、应…...

tcpdump交叉编译

TCPDUMP在Libpcap上开发。 首先需要编译libcap。 网上那么多教程,下载地址都只给了一个英文的官网首页, 你尽可以试试,从里面找到下载地址都要费半天时间。 \color{red}网上那么多教程,下载地址都只给了一个英文的官网首页&#…...

Spring IOC注入方式、Bean作用域

Spring IOC注入 手动注入 set方法注入 需要提供set方法 public class UserService {private UserDao userDao; ​public void setUserDao(UserDao userDao) {this.userDao userDao;} } 设置属性字段的值 <bean id"userService" class"com.shsxt.servi…...

uniapp微信小程序转发跳转指定页面

onShareAppMessage 是微信小程序中的一个重要函数&#xff0c;用于自定义转发内容。当用户点击右上角的菜单按钮&#xff0c;并选择“转发”时&#xff0c;会触发这个函数。开发者可以在这个函数中返回一个对象&#xff0c;用于定义分享卡片的标题、图片、路径等信息。 使用场…...

利用uniapp开发鸿蒙:运行到鸿蒙模拟器—踩坑合集

从uniapp运行到鸿蒙模拟器上这一步&#xff0c;就有非常多的坑&#xff0c;一些常见的坑&#xff0c;官网都有介绍&#xff0c;就不再拿出来了&#xff0c;这里记录一下官网未记录的大坑 1.运行路径从hbuilderx启动鸿蒙模拟器 解决方法&#xff1a; Windows系统&#xff0c;官…...

【Vue】Vue3.0(二十五)Vue3.0中的具名插槽 的概念和使用场景

上篇文章 【Vue】Vue3.0&#xff08;二十四&#xff09;Vue3.0中 r e f s 、 refs 、 refs、parent 的概念和使用场景 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Vue专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年11月20日16点30分 …...

【pytorch-02】:张量的索引、形状操作和常见运算函数

文章目录 1 张量索引1.1 简单行列索引和列表索引1.2 布尔索引和多维索引 2 张量的形状操作2.1 reshape函数2.2 transpose和permute函数的使用2.3 view和contiguous函数2.4 squeeze和unsqueeze函数用法2.5 张量更改形状小结 3 常见运算函数 1 张量索引 1.1 简单行列索引和列表索…...

C语言-指针作为函数返回值及二级指针

1、指针作为函数返回值 c语言允许函数的返回值是一个指针&#xff08;地址&#xff09;我们将这样的函数称为指针函数&#xff0c;下面的例子定义一了一个函数strlong&#xff08;&#xff09;&#xff0c;用来返回两个字符串中较长的一个&#xff1a; 1. #include <stdio…...

css 使用图片作为元素边框

先看原始图片 再看效果 边框的四个角灭有拉伸变形,但是图片的中部是拉伸的 代码 border-style: solid;/* 设置边框图像的来源 */border-image-source: url(/static/images/mmwz/index/bk_hd3x.png);/* 设置如何切割图像 */border-image-slice: 66;/* 设置边框的宽度 */border…...

Linux无sudo权限将zsh作为默认shell

由于我只有用户权限&#xff0c;没有sudo权限&#xff0c;将zsh作为用户默认shell需要密码&#xff0c;所以没法在系统层面进行操作&#xff0c;下面另寻他法。 安装zsh 可以根据网上教程去安装zsh&#xff0c;一般电脑上会带有zsh&#xff0c;可以使用下述命令查看是否安装z…...

在数据分析和报告自动化场景中集成Taotoken调用大模型

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 在数据分析和报告自动化场景中集成Taotoken调用大模型 数据分析与报告生成是许多团队日常工作中的高频任务。传统流程中&#xff0…...

Windows使用Powershell自动安装SqlServer2025服务器与SSMS管理工具

下载地址: https://www.microsoft.com/zh-cn/evalcenter/evaluate-sql-server-2025 安装结果: 安装前准备: 1.下载mssql server 2025安装器 2.下载iso镜像 3.下载好SSMS安装程序,并放到iso同目录下...

2026年3大知识竞赛软件测评:告别抢答器,手机闯关如何玩出高级感?

在2026年的今天&#xff0c;组织一场知识竞赛不再需要搬运笨重的抢答硬件&#xff0c;也不再需要人工统计分数。无论是学校的百科竞赛&#xff0c;还是企业的安全生产月活动&#xff0c;组织者最核心的需求已经演变为&#xff1a;如何在保证万人并发稳定的前提下&#xff0c;玩…...

TPU加速GAN训练实战:从设备配置到FID达标完整指南

1. 项目概述&#xff1a;为什么用TPU跑GAN不是“炫技”&#xff0c;而是解决实际瓶颈的刚需你有没有在Kaggle或Colab上训练过DCGAN、StyleGAN2或者哪怕一个简化版的WGAN&#xff1f;我试过——在单块P100 GPU上跑一个6464分辨率的生成器&#xff0c;50个epoch要花3小时17分钟&a…...

N_m3u8DL-CLI-SimpleG:一键下载M3U8视频的终极图形界面工具

N_m3u8DL-CLI-SimpleG&#xff1a;一键下载M3U8视频的终极图形界面工具 【免费下载链接】N_m3u8DL-CLI-SimpleG N_m3u8DL-CLIs simple GUI 项目地址: https://gitcode.com/gh_mirrors/nm3/N_m3u8DL-CLI-SimpleG 你是否曾经想要保存在线视频却因为复杂的M3U8格式而束手无…...

基于RA4M2的便携GPS定位器开发:从硬件选型到低功耗优化全解析

1. 项目概述与核心价值最近在做一个挺有意思的小玩意儿&#xff0c;用瑞萨的RA4M2-SENSOR开发板&#xff0c;折腾出了一个巴掌大小的便携式GPS定位器。这玩意儿听起来好像没啥新鲜的&#xff0c;市面上成品一大堆&#xff0c;但自己从头到尾搭一遍&#xff0c;从选型、画板、写…...

Pocket Sync:Analogue Pocket玩家的终极游戏管理解决方案

Pocket Sync&#xff1a;Analogue Pocket玩家的终极游戏管理解决方案 【免费下载链接】pocket-sync A GUI tool (Mac, Windows, Linux) for doing stuff with the Analogue Pocket 项目地址: https://gitcode.com/gh_mirrors/po/pocket-sync 想象一下&#xff0c;你刚刚…...

集成网口设计全攻略:带磁性RJ45的选型、PoE适配与EMC布局实战

&#x1f4cc; 摘要&#xff1a; 集成网口&#xff08;带网络变压器的RJ45连接器&#xff09;将隔离变压器、共模扼流圈和RJ45插座合为一体&#xff0c;极大简化了以太网物理层设计。但不同PHY驱动类型、PoE功率等级、EMC性能要求以及工业环境振动等因素&#xff0c;都直接影响…...

5分钟搞定AI 3D建模!TripoSR:图片秒变专业3D模型的终极方案

5分钟搞定AI 3D建模&#xff01;TripoSR&#xff1a;图片秒变专业3D模型的终极方案 【免费下载链接】TripoSR TripoSR: Fast 3D Object Reconstruction from a Single Image 项目地址: https://gitcode.com/GitHub_Trending/tr/TripoSR 还在为复杂的3D建模软件头疼吗&am…...

Spec-Kit + Superpowers 实战:Go语言博客论坛系统的规范驱动开发

从“凭感觉写代码”到“按规范做工程”,一套完整的AI驱动开发方法论落地 一、引言:AI编程的“效率陷阱” 2024年Google DORA报告揭示了一个令人困惑的数据:AI编码助手采用率每提升25%,软件交付稳定性反而下降7.2%。问题出在哪?研究表明,当上下文从1K Token扩展到32K Tok…...