> 技术文档 > 【Docker系列十二】使用Docker run命令部署Redis_docker run redis

【Docker系列十二】使用Docker run命令部署Redis_docker run redis


💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
img

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术,jvm,并发编程 redis,kafka,Spring,微服务等
    • 常用开发工具系列:常用的开发工具,IDEA,Mac,Alfred,Git,typora 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 新空间代码工作室:提供各种软件服务,承接各种毕业设计,毕业论文等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

博客目录

  • 使用 Docker run 命令部署 Redis 的完整指南
    • 一、Redis 容器化概述
      • 1.1 容器化部署优势
      • 1.2 官方镜像特点
    • 二、基础部署实战
      • 2.1 获取官方镜像
      • 2.2 最小化启动命令
      • 2.3 连接验证
    • 三、持久化与数据管理
      • 3.1 数据目录挂载
      • 3.2 配置文件定制
      • 3.3 备份与恢复
    • 四、安全加固配置
      • 4.1 密码保护
      • 4.2 网络隔离
      • 4.3 非 root 运行
    • 五、高级配置技巧
      • 5.1 内存管理
      • 5.2 主从复制
      • 5.3 哨兵模式
    • 六、生产环境部署
      • 6.1 资源限制
      • 6.2 健康监控
      • 6.3 日志管理
    • 七、性能优化建议
      • 7.1 内核参数调优
      • 7.2 持久化策略
      • 7.3 连接池设置
    • 八、故障排查指南
      • 8.1 常见问题诊断
      • 8.2 性能问题排查
      • 8.3 恢复流程

使用 Docker run 命令部署 Redis 的完整指南

Redis 作为当今最流行的内存数据库和缓存解决方案之一,与 Docker 容器技术的结合为开发者提供了极致的部署灵活性和环境一致性。
在这里插入图片描述

一、Redis 容器化概述

1.1 容器化部署优势

Redis 容器化部署具有以下显著优势:

  • 秒级启动:传统安装需要编译和配置,容器化部署仅需一条命令
  • 环境隔离:每个 Redis 实例拥有独立的环境,避免端口和配置冲突
  • 资源控制:精确限制 CPU、内存等资源使用量
  • 版本管理:轻松切换不同 Redis 版本(4.0/5.0/6.0/7.0 等)
  • 数据持久化:通过卷挂载实现数据持久存储

1.2 官方镜像特点

Redis 官方 Docker 镜像提供:

  • 多个版本选择(最新稳定版/特定版本)
  • 基于 Alpine 和 Debian 的两种镜像变体
  • 自动配置机制
  • 内置健康检查支持
  • 默认安全配置(保护模式启用)

二、基础部署实战

2.1 获取官方镜像

拉取最新 Redis 镜像:

docker pull redis:7.0

验证镜像:

docker image inspect redis:7.0 | jq \'.[0].Config.Cmd\'

2.2 最小化启动命令

启动基础 Redis 容器:

docker run -d \\ --name redis-dev \\ -p 6379:6379 \\ redis:7.0

参数说明:

  • -d:后台运行模式
  • --name:指定容器名称
  • -p:端口映射(主机端口:容器端口)

2.3 连接验证

使用 redis-cli 连接测试:

docker exec -it redis-dev redis-cli127.0.0.1:6379> PING# 应返回 \"PONG\"

外部客户端连接:

redis-cli -h 127.0.0.1 -p 6379

三、持久化与数据管理

3.1 数据目录挂载

创建数据目录:

mkdir -p ~/redis-data/{data,conf}

启动持久化实例:

docker run -d \\ --name redis-prod \\ -v ~/redis-data/data:/data \\ -v ~/redis-data/conf:/usr/local/etc/redis \\ redis:7.0 \\ redis-server /usr/local/etc/redis/redis.conf

3.2 配置文件定制

获取默认配置:

wget -O ~/redis-data/conf/redis.conf \\ https://raw.githubusercontent.com/redis/redis/7.0/redis.conf

关键配置修改:

# 启用持久化save 900 1save 300 10save 60 10000# 内存限制maxmemory 2gbmaxmemory-policy allkeys-lru# 安全设置requirepass yourstrongpassword

3.3 备份与恢复

执行 RDB 备份:

docker exec redis-prod redis-cli SAVEcp ~/redis-data/data/dump.rdb ~/redis-backup/

从备份恢复:

docker stop redis-prodcp ~/redis-backup/dump.rdb ~/redis-data/data/docker start redis-prod

四、安全加固配置

4.1 密码保护

通过环境变量设置密码:

docker run -d \\ --name redis-secure \\ -e REDIS_PASSWORD=yourstrongpassword \\ redis:7.0 \\ redis-server --requirepass ${REDIS_PASSWORD}

4.2 网络隔离

创建专用网络:

docker network create redis-netdocker run -d \\ --network redis-net \\ --name redis-internal \\ redis:7.0

4.3 非 root 运行

docker run -d \\ --user redis \\ --cap-drop ALL \\ --read-only \\ redis:7.0

五、高级配置技巧

5.1 内存管理

限制内存使用:

docker run -d \\ --name redis-mem \\ --memory=\"2g\" \\ --memory-swap=\"3g\" \\ -e MAXMEMORY=2gb \\ redis:7.0

5.2 主从复制

主节点:

docker run -d \\ --name redis-master \\ redis:7.0 \\ redis-server --appendonly yes

从节点:

docker run -d \\ --name redis-slave \\ --link redis-master:master \\ redis:7.0 \\ redis-server --slaveof master 6379 --appendonly yes

5.3 哨兵模式

哨兵配置示例:

docker run -d \\ --name redis-sentinel \\ -v ./sentinel.conf:/sentinel.conf \\ redis:7.0 \\ redis-sentinel /sentinel.conf

六、生产环境部署

6.1 资源限制

docker run -d \\ --name redis-production \\ --cpus=\"2\" \\ --memory=\"4g\" \\ --blkio-weight=500 \\ redis:7.0

6.2 健康监控

启用健康检查:

docker run -d \\ --health-cmd=\"redis-cli PING || exit 1\" \\ --health-interval=30s \\ --health-timeout=3s \\ --health-retries=3 \\ redis:7.0

6.3 日志管理

JSON 格式日志:

docker run -d \\ --log-driver json-file \\ --log-opt max-size=10m \\ --log-opt max-file=3 \\ redis:7.0

七、性能优化建议

7.1 内核参数调优

echo \"vm.overcommit_memory = 1\" >> /etc/sysctl.confecho \"net.core.somaxconn = 65535\" >> /etc/sysctl.confsysctl -p

7.2 持久化策略

AOF 配置优化:

appendonly yesappendfsync everysecauto-aof-rewrite-percentage 100auto-aof-rewrite-min-size 64mb

7.3 连接池设置

客户端连接优化:

timeout 300tcp-keepalive 60maxclients 10000

八、故障排查指南

8.1 常见问题诊断

查看运行日志:

docker logs redis-prod

内存分析:

docker exec redis-prod redis-cli INFO MEMORY

8.2 性能问题排查

慢查询分析:

docker exec redis-prod redis-cli SLOWLOG GET 10

监控关键指标:

docker exec redis-prod redis-cli INFO STATS

8.3 恢复流程

数据恢复步骤:

  1. 定位问题原因(日志/监控)
  2. 如有必要,从备份恢复 RDB 文件
  3. 验证数据完整性
  4. 逐步恢复服务

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

img