五分鐘上手!Docker?Compose 快速部署 Redis
為什么要用Docker部署Redis?
(1) 環境隔離
- 不同項目可用不同Redis版本互不干擾
- 清爽的容器環境,卸載也只需一條命令
(2) 快速啟動
- 官方鏡像一鍵拉取,秒級啟動
- 無需手動編譯、配置依賴
(3) 便于運維與擴展
- 容器編排Kubernetes/Docker?Compose一鍵橫向擴容
- 統一監控、日志收集更簡單
(4) 版本可控
- 鏡像標簽精確對應 Redis 版本
- 回滾也只要切換鏡像標簽
優缺點
維度 | 優勢 | 劣勢 |
上手難度 | 簡單: | 需先理解 Docker 基礎 |
資源隔離 | 強:各容器獨立文件系統與網絡 | 容器層額外消耗少量資源 |
數據持久化 | 可用 | 若不小心,持久化目錄誤刪會丟數據 |
可擴展性 | 配合編排工具輕松伸縮 | 單機環境多實例需手動端口映射管理 |
安全 | 可通過自定義網絡與安全策略隔離訪問 | 需額外配置密碼/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:結構清晰、易于維護
友好提示:本地測試、開發環境極佳;生產環境請結合編排、監控與備份方案