该Docker镜像基于Alpine Linux构建,用于运行Redis服务器及可选的Sentinel组件。Redis是开源BSD许可的高级键值缓存与存储系统,支持字符串、哈希、列表等多种数据结构,适用于分布式数据存储需求。
Docker镜像仓库
datacore/redis:latest
registry.timmertech.nl/docker/redis:latest
源码仓库
- https://github.com/gjrtimmer/docker-redis
- GitLab
安装方法
从DockerHub安装
下载镜像:
bash
docker pull datacore/redis:latest
构建镜像:
bash
docker build -t datacore/redis https://github.com/gjrtimmer/docker-redis
从TimmerTech安装
下载镜像:
bash
docker pull registry.timmertech.nl/docker/redis:latest
构建镜像:
bash
docker build -t datacore/redis https://gitlab.timmertech.nl/docker/redis
示例配置
- 独立Redis
- 独立主节点
- 独立从节点
- 独立Sentinel
- 带Sentinel的主节点
- 带Sentinel的从节点
- 基础故障转移设置(3个Redis + 3个Sentinel)
默认配置位置
| 类型 | 默认值 |
|---|
| Redis端口 | 6379 |
| Sentinel端口 | 26379 |
| 数据目录 | /var/lib/redis |
| 日志目录 | /var/log/redis |
| Unix套接字 | /var/run/redis/redis.sock |
配置说明
通用配置
### 通用配置项
| 选项 | 默认值 | 描述 |
|-----------------|---------------------|----------------------|
| `REDIS` | `1` / `true` | 启用Redis服务器 |
| `SENTINEL` | `0` / `false` | 启用Redis Sentinel |
| `USERMAP_UID` | redis | 将所有权映射到UID |
| `USERMAP_GID` | redis | 将所有权映射到GID |
Redis配置
### Redis配置项
| 选项 | 默认值 | 描述 |
|-------------------------------|-------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `REDIS` | `1` / `true` | 启用Redis服务器 |
| `REDIS_TIMEOUT` | 0 | 客户端空闲N秒后关闭连接(0表示禁用) |
| `REDIS_KEEPALIVE` | 300 | TCP保活:非零值时,在无通信时向客户端发送TCP ACK,用于检测死节点和保持网络设备连接。Linux下为发送ACK的周期(秒),关闭连接需两倍时间;其他内核依赖配置。合理值为300秒(Redis 3.2.1起默认)。 |
| `REDIS_DATABASES` | 16 | Redis数据库数量 |
| `REDIS_DATA` | /var/lib/redis | Redis数据目录 |
| `REDIS_PASSWORD` | - | Redis密码 |
| `REDIS_MAXCLIENTS` | *** | 最大连接客户端数 |
| `REDIS_MIN_SLAVES_TO_WRITE` | 1 | 当连接的从节点数少于N且延迟≤M秒时,主节点停止接受写入 |
| `REDIS_MIN_SLAVES_MAX_LAG` | 10 | 当连接的从节点数少于N且延迟≤M秒时,主节点停止接受写入 |
从节点配置
### 从节点配置项
| 选项 | 默认值 | 是否必填 | 描述 |
|-----------------|-------|--------|------------------------------------------------------------------------------------------------------------------------------|
| `SLAVE` | 0 | - | 将Redis标记为从节点 |
| `SLAVE_MHOST` | - | 是 | 主节点IP |
| `SLAVE_MPORT` | 6379 | 否 | 主节点Redis端口 |
| `SLAVE_MPASS` | - | 否 | 主节点Redis密码 |
| `SLAVE_IP` | - | 否 | 从节点公布IP(用于Docker NAT,即Docker主机IP,对应Redis的`slave-announce-ip`) |
| `SLAVE_PORT` | - | 否 | 从节点公布端口(用于Docker,即Docker主机端口,对应Redis的`slave-announce-port`) |
Sentinel配置
### Sentinel配置项
| 选项 | 默认值 | 是否必填 | 描述 |
|-------------------------------|-------|--------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `SENTINEL` | 0 | - | 启用Redis Sentinel |
| `SENTINEL_IP` | - | 否 | Sentinel公布IP(用于Docker NAT,即Docker主机IP,对应`Sentinel announce-ip`) |
| `SENTINEL_PORT` | - | 否 | Sentinel公布端口(用于Docker NAT,即Docker主机端口,对应`Sentinel announce-port`) |
| `SENTINEL_MSET` | - | 是 | 主节点集名称 |
| `SENTINEL_MHOST` | - | 是 | 主节点Redis IP |
| `SENTINEL_MPORT` | 6379 | 否 | 主节点Redis端口 |
| `SENTINEL_MPASS` | - | 否 | 主节点Redis密码 |
| `SENTINEL_QUORUM` | - | 是 | 投票法定人数 |
| `SENTINEL_DOWN_AFTER_MS` | 30000 | 否 | 主节点(或附属从节点/Sentinel)在指定毫秒内无法访问(无PING回复)时,标记为S_DOWN状态(主观下线),默认30秒。 |
| `SENTINEL_PARALLEL_SYNCS` | 1 | 否 | 故障转移期间可同时重新配置指向新主节点的从节点数量。若用从节点服务查询,建议设较低值避免所有从节点同步时不可用。 |