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

news/2024/11/23 12:03:09/

文章目录

  • 前言
      • 实测环境:
      • 实验思路:
  • 正文
      • 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端口,避免端口冲突。


http://www.ppmy.cn/news/1549278.html

相关文章

大数据新视界 -- 大数据大厂之 Hive 数据导入:多源数据集成的策略与实战(上)(3/ 30)

💖💖💖亲爱的朋友们,热烈欢迎你们来到 青云交的博客!能与你们在此邂逅,我满心欢喜,深感无比荣幸。在这个瞬息万变的时代,我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

141. Sprite标签(Canvas作为贴图)

上节课案例创建标签的方式,是把一张图片作为Sprite精灵模型的颜色贴图,本节给大家演示把Canvas画布作为Sprite精灵模型的颜色贴图,实现一个标签。 注意:本节课主要是技术方案讲解,默认你有Canvas基础,如果没有Canvas基…

主IP地址与从IP地址:深入解析与应用探讨

在互联网的浩瀚世界中,每台联网设备都需要一个独特的身份标识——IP地址。随着网络技术的不断发展,IP地址的角色日益重要,而“主IP地址”与“从IP地址”的概念也逐渐进入人们的视野。这两个术语虽然看似简单,实则蕴含着丰富的网络…

算法训练(leetcode)二刷第二十九天 | 62. 不同路径、63. 不同路径 II、343. 整数拆分、96. 不同的二叉搜索树

刷题记录 62. 不同路径二维数组滚动数组 63. 不同路径 II二维数组滚动数组 343. 整数拆分动态规划数论方法 96. 不同的二叉搜索树动态规划数论方法 62. 不同路径 leetcode题目地址 二维数组 动态规划。题目中说明只能向下或向右移动,因此每个位置的更新只与左侧和…

FIFO和LRU算法实现操作系统中主存管理

FIFO&#xff0c;用数组实现 1和2都是使用nextReplace实现新页面位置的更新 1、不精确时间&#xff1a;用ctime输出运行时间都是0.00秒 #include <iostream> #include <iomanip> #include<ctime>//用于计算时间 using namespace std;// 页访问顺序 int pa…

Lisp 语言入门教程(一)

Lisp&#xff08;“LISt Processing”&#xff09;是一种古老而强大的编程语言&#xff0c;特别适合处理符号数据和列表。Lisp 是一种以括号和递归见长的语言&#xff0c;它启发了许多编程范式。以下是一个基础教程&#xff0c;帮助你快速了解 Lisp 的基本语法和功能。 1. 认识…

商用密码产品认证名录说明

《商用密码产品认证目录》是为贯彻落实《中华人民共和国密码法》&#xff0c;进一步健全完善商用密码产品认证体系&#xff0c;更好满足商用密码产业发展需要&#xff0c;根据《国家密码管理局 市场监管总局关于调整商用密码产品管理方式的公告》《市场监管总局 国家密码管理局…

linux从0到1——shell编程8

声明&#xff01; 学习视频来自B站up主 **泷羽sec** 有兴趣的师傅可以关注一下&#xff0c;如涉及侵权马上删除文章&#xff0c;笔记只是方便各位师傅的学习和探讨&#xff0c;文章所提到的网站以及内容&#xff0c;只做学习交流&#xff0c;其他均与本人以及泷羽sec团队无关&a…