Docker‑Compose 快速部署 Redis

159 阅读3分钟

为什么要用Docker部署Redis?

(1) 环境隔离

  • 不同项目可用不同Redis版本互不干扰
  • 清爽的容器环境,卸载也只需一条命令

(2) 快速启动

  • 官方镜像一键拉取,秒级启动
  • 无需手动编译、配置依赖

(3) 便于运维与扩展

  • 容器编排Kubernetes/Docker‑Compose一键横向扩容
  • 统一监控、日志收集更简单

(4) 版本可控

  • 镜像标签精确对应 Redis 版本
  • 回滚也只要切换镜像标签

优缺点

维度优势劣势
上手难度简单:docker run 一条命令搞定需先理解 Docker 基础
资源隔离强:各容器独立文件系统与网络容器层额外消耗少量资源
数据持久化可用 -v 或 volume 灵活挂载宿主目录若不小心,持久化目录误删会丢数据
可扩展性配合编排工具轻松伸缩单机环境多实例需手动端口映射管理
安全可通过自定义网络与安全策略隔离访问需额外配置密码/ACL,防火墙等才能保证安全

一条命令快速跑起Redis

docker run -d\
--name redis-demo \
-p6379:6379 \
-v ./redis-data:/data \
  redis:7.0 \
  redis-server --appendonlyyes

  • -d:后台启动
  • --name:容器名
  • -p:端口映射(宿主机 6379 → 容器 6379)
  • -v:挂载本地 ./redis-data 目录,以实现 AOF 持久化
  • redis:7.0:使用官方 7.0 镜像
  • --appendonly yes:开启 AOF 持久化

验证:

dockerps# 查看运行中的容器
redis-cli -h127.0.0.1 -p6379ping# 应返回 PONG

Docker‑Compose 方式部署

对于有多服务、配置更复杂的场景,docker-compose显得更优雅。只需一份docker-compose.yml,即可一键启动。

version:'3.8'

services:
redis:
image: redis:7.0
container_name: redis-demo
restart: unless-stopped
ports:
-"6379:6379"
volumes:
- ./redis-data:/data
- ./redis.conf:/usr/local/etc/redis/redis.conf
command:["redis-server","/usr/local/etc/redis/redis.conf"]

  • 自定义配置:通过挂载 redis.conf 调整内存、持久化方式、密码等
  • 重启策略**:unless-stopped 保证意外重启后自动恢复
  • 数据卷:持久化目录与配置文件分离

启动:

docker-compose up -d

常用配置示例 (redis.conf)

# 关闭保护模式(仅在受信网络中使用)
protected-mode no

# 监听所有网卡
bind 0.0.0.0

# 设置访问密码
requirepass YourStrongP@ssw0rd

# 开启 AOF 持久化
appendonly yes
appendfilename "appendonly.aof"

# 内存极限(单位 bytes)
maxmemory 256mb
maxmemory-policy allkeys-lru

常见问题 & 小贴士

(1) 如何修改端口?

只需在 ports 或 -p 中调整映射,例如 - "6380:6379"。

(2) 数据目录无权限?

检查宿主机目录拥有者,最好 chown 1000:1000 redis-data,或在 Compose 中加 user: "1000:1000"。

(3) 如何备份数据?

定期将宿主机 redis-data 目录打包或同步到远程存储。

(4) 安全性考量

  • 强烈建议设置 requirepass
  • 结合 Docker 网络,限制外网访问
  • 在生产环境中,使用 Redis Sentinel 或 Cluster 提高可用性

小结

  • docker run:零依赖、快速体验
  • docker-compose:结构清晰、易于维护

友好提示:本地测试、开发环境极佳;生产环境请结合编排、监控与备份方案