五分鐘上手!Docker?Compose 快速部署 Redis
為什么要用Docker部署Redis?
(1) 環(huán)境隔離
- 不同項(xiàng)目可用不同Redis版本互不干擾
- 清爽的容器環(huán)境,卸載也只需一條命令
(2) 快速啟動(dòng)
- 官方鏡像一鍵拉取,秒級(jí)啟動(dòng)
- 無需手動(dòng)編譯、配置依賴
(3) 便于運(yùn)維與擴(kuò)展
- 容器編排Kubernetes/Docker?Compose一鍵橫向擴(kuò)容
- 統(tǒng)一監(jiān)控、日志收集更簡(jiǎn)單
(4) 版本可控
- 鏡像標(biāo)簽精確對(duì)應(yīng) Redis 版本
- 回滾也只要切換鏡像標(biāo)簽
優(yōu)缺點(diǎn)
維度 | 優(yōu)勢(shì) | 劣勢(shì) |
上手難度 | 簡(jiǎn)單: | 需先理解 Docker 基礎(chǔ) |
資源隔離 | 強(qiáng):各容器獨(dú)立文件系統(tǒng)與網(wǎng)絡(luò) | 容器層額外消耗少量資源 |
數(shù)據(jù)持久化 | 可用 | 若不小心,持久化目錄誤刪會(huì)丟數(shù)據(jù) |
可擴(kuò)展性 | 配合編排工具輕松伸縮 | 單機(jī)環(huán)境多實(shí)例需手動(dòng)端口映射管理 |
安全 | 可通過自定義網(wǎng)絡(luò)與安全策略隔離訪問 | 需額外配置密碼/ACL,防火墻等才能保證安全 |
一條命令快速跑起Redis
docker run -d\
--name redis-demo \
-p6379:6379 \
-v ./redis-data:/data \
redis:7.0 \
redis-server --appendonlyyes
- -d:后臺(tái)啟動(dòng)
- --name:容器名
- -p:端口映射(宿主機(jī) 6379 → 容器 6379)
- -v:掛載本地 ./redis-data 目錄,以實(shí)現(xiàn) AOF 持久化
- redis:7.0:使用官方 7.0 鏡像
- --appendonly yes:開啟 AOF 持久化
驗(yàn)證:
dockerps# 查看運(yùn)行中的容器
redis-cli -h127.0.0.1 -p6379ping# 應(yīng)返回 PONG
Docker?Compose 方式部署
對(duì)于有多服務(wù)、配置更復(fù)雜的場(chǎng)景,docker-compose顯得更優(yōu)雅。只需一份docker-compose.yml,即可一鍵啟動(dòng)。
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 調(diào)整內(nèi)存、持久化方式、密碼等
- 重啟策略**:unless-stopped 保證意外重啟后自動(dòng)恢復(fù)
- 數(shù)據(jù)卷:持久化目錄與配置文件分離
啟動(dòng):
docker-compose up -d
常用配置示例 (redis.conf)
# 關(guān)閉保護(hù)模式(僅在受信網(wǎng)絡(luò)中使用)
protected-mode no
# 監(jiān)聽所有網(wǎng)卡
bind 0.0.0.0
# 設(shè)置訪問密碼
requirepass YourStrongP@ssw0rd
# 開啟 AOF 持久化
appendonly yes
appendfilename "appendonly.aof"
# 內(nèi)存極限(單位 bytes)
maxmemory 256mb
maxmemory-policy allkeys-lru
常見問題 & 小貼士
(1) 如何修改端口?
只需在 ports 或 -p 中調(diào)整映射,例如 - "6380:6379"。
(2) 數(shù)據(jù)目錄無權(quán)限?
檢查宿主機(jī)目錄擁有者,最好 chown 1000:1000 redis-data,或在 Compose 中加 user: "1000:1000"。
(3) 如何備份數(shù)據(jù)?
定期將宿主機(jī) redis-data 目錄打包或同步到遠(yuǎn)程存儲(chǔ)。
(4) 安全性考量
- 強(qiáng)烈建議設(shè)置 requirepass
- 結(jié)合 Docker 網(wǎng)絡(luò),限制外網(wǎng)訪問
- 在生產(chǎn)環(huán)境中,使用 Redis Sentinel 或 Cluster 提高可用性
小結(jié)
- docker run:零依賴、快速體驗(yàn)
- docker-compose:結(jié)構(gòu)清晰、易于維護(hù)
友好提示:本地測(cè)試、開發(fā)環(huán)境極佳;生產(chǎn)環(huán)境請(qǐng)結(jié)合編排、監(jiān)控與備份方案