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

图文详解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端口,避免端口冲突。


http://www.kler.cn/a/406618.html

相关文章:

  • 学习笔记|MaxKB对接本地大模型时,选择Ollma还是vLLM?
  • uniapp发布android上架应用商店权限
  • 第T8周:Tensorflow实现猫狗识别(1)
  • 自制游戏:监狱逃亡
  • wsl安装
  • Quality minus junk论文阅读
  • 前端高能组件库 Shadcn-UI
  • Chroma致茂Chroma61815回收式电网模拟电源
  • SQL 分页查询详解
  • [表达式]七个古墓
  • leetcode 919.完全二叉树插入器
  • MacOS通过X11转发远程运行virt-manager进行虚机分配
  • 笔记记录 k8s-install
  • Ubuntu文件系统简记
  • 如何删除Kafka中的数据以及删除topic
  • aws配置飞书告警通知
  • Elasticsearch面试内容整理-高级特性
  • 基于Redis实现的手机短信登入功能
  • Android开发实战班 - 现代 UI 开发之 Modifier 全面应用
  • HarmonyOS笔记5:ArkUI框架的Navigation导航组件
  • 第 21 章 - Go lang反射机制
  • (python)unittest框架
  • 《线性代数的本质》
  • 拥抱极简主义前端开发:NoCss.js 引领无 CSS 编程潮流
  • 基于Springboot+Vue动漫推荐平台管理系统(源码+lw+讲解部署+PPT)
  • [NewStarCTF 2023]Include--详细解析