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

Docker启动两个Redis镜像并配置一主一从

使用 docker inspect 命令
docker inspect 可以查看容器的详细信息,包括 IP 地址。
#格式化输出关键信息(示例:查看端口映射)

docker inspect --format='{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' 容器名或容器ID

#查看环境变量

docker inspect --format='{{json .Config.Env}}' 容器名或容器ID
#查看单个容器的 IP
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器名或容器ID# 查看多个容器的 IP(分别执行)
docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器1
docker inspect -f '{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器2

Docker 启动两个 Redis 镜像并配置一主一从

步骤一:拉取 Redis 镜像
打开终端,执行以下命令拉取 Redis 镜像(以官方镜像为例):

docker pull redis

如果要指定版本,例如 7.4.5 版本,命令如下:

docker pull redis:7.4.5

步骤二:创建 Docker 网络(可选,但推荐)
为了方便容器之间的通信,创建一个自定义的 Docker 网络,执行以下命令:

docker network create redis-network

步骤三:启动主 Redis 容器
执行以下命令启动主 Redis 容器,这里将容器的 6379 端口映射到宿主机的 6379 端口,并将容器加入到前面创建的自定义网络中:

docker run -d --name redis-master \--network redis-network \-p 6379:6379 \redis

步骤四:启动从 Redis 容器并配置主从关系
执行以下命令启动从 Redis 容器,将容器的 6380 端口映射到宿主机的 6380 端口,同时通过 redis-cli --cluster 命令或者在配置文件中配置主从关系。
通过修改配置文件配置,先进入从 Redis 容器:

docker run -d --name redis-slave \--network my-redis-network \-p 6380:6379 \redis
# 进入从 Redis 容器    
docker exec -it redis-slave bash

编辑 Redis 配置文件(通常是 /etc/redis/redis.conf或者/usr/local/etc/redis/redis.conf ),添加或修改以下内容来指定主 Redis 的地址和端口:

slaveof <master_ip> <master_port>

例如,假设主 Redis 在 Docker 网络内的 IP 是 172.18.0.2(可通过 docker inspect 获取),端口 6379

slaveof 172.18.0.2 6379

保存配置文件后,重启从 Redis 容器:

docker restart redis-slave

步骤五:验证主从配置
主 Redis 写入数据验证:

docker exec -it redis-master bash

使用 redis-cli 写入数据,例如:

redis-cli
set key1 value1

从 Redis 读取数据验证:
进入从 Redis 容器:

docker exec -it redis-slave bash

使用 redis-cli 读取数据:

redis-cli
get key1

如果能读取到主 Redis 写入的 value1 ,则说明主从配置成功。

http://www.xdnf.cn/news/1428589.html

相关文章:

  • Linux内核O(1)调度算法
  • 汽车制造工厂如何应用力控SCADA实现全方位智能监控与诊断
  • 从“成本中心”到“生产力引擎”:MCP如何将AI从“建议者”变为“执行者”
  • 2025年新版C语言 模电数电及51单片机Proteus嵌入式开发入门实战系统学习,一整套全齐了再也不用东拼西凑
  • 久等啦!Tigshop O2O多门店JAVA/PHP版本即将上线!
  • 通义万相Wan2.2-S2V-14B:AI视频生成的革命性突破与实践指南
  • c++ 类和对象(上)
  • 与后端对话:在React中优雅地请求API数据 (Fetch/Axios)
  • token存储方案
  • iOS XML 处理利器:CNXMLParser 与 CNXMLDocument 深度解析
  • 从零开始的python学习——函数(2)
  • 漫画短剧小程序系统开发:从0到1的核心架构与思路
  • 今天我们开始学习shell编程语言
  • @ZooKeeper 详细介绍部署与使用详细指南
  • 【JavaScript】前端两种路由模式,Hash路由,History 路由
  • 通过 FinalShell 访问服务器并运行 GUI 程序,提示 “Cannot connect to X server“ 的解决方法
  • NV115NV119美光固态闪存NV129NV112
  • 【53页PPT】华为制造行业数字化转型工业互联网智能制造解决方案(附下载方式)
  • Spring MVC BOOT 中体现的设计模式
  • Python 环境配置初学者指南:从安装到 Pycharm 项目配置
  • OpenHarmony HVB安全启动一键启停全栈实践:从U-Boot签名到fastboot解锁的闭环避坑指南
  • Python OpenCV图像处理与深度学习:Python OpenCV性能优化与高效图像处理
  • 为什么神经网络网络算法比机器学习模型算法更加强大?
  • 关于嵌入式学习——嵌入式硬件1
  • More Effective C++ 条款23:考虑使用其他程序库
  • 没有天硕工业级SSD固态硬盘,物联网痛点如何解决?
  • 虚实交互新突破:Three.js融合AR技术的孪生数据操控方法
  • Angular事件处理全攻略:从基础到进阶的完整指南
  • JSON Schema 格式详解、版本介绍和示例教程
  • 利用 Python 获取微店商品详情 API 接口数据的实战指南