
11notes/redis!size!5px!pulls!5px[]([***]
以无root权限、无发行版的方式安全运行Redis。
对于构建实时数据驱动应用的开发者,Redis是首选的、最快且功能最丰富的缓存、数据结构服务器以及文档和向量查询引擎。
!REDISINSIGHT
我能用它做什么? 该镜像将以无root权限和无发行版方式运行Redis,以提高安全性。除了比大多数镜像更安全、更精简外,它还提供额外的启动参数,可将Redis启动为命令模式、副本模式或纯内存数据库(不持久化数据到磁盘)。只需提供所需命令即可:
REDIS_HOST环境变量指定的Redis数据库执行所有命令为什么我应该运行此镜像而不是其他已存在的镜像? 好问题!因为...
如果您重视安全性、简洁性和极致优化,那么此镜像可能适合您。
以下是此镜像与最常用或原始镜像的对比。
| 镜像 | 磁盘大小 | 默认初始用户 | 无发行版 | 支持的架构 |
|---|---|---|---|---|
| 11notes/redis:8.2.3 | 20MB | 1000:1000 | ✅ | amd64, arm64, armv7 |
如果您想使用密钥而非环境变量,请查看compose.secrets.yml。
yamlname: "kv" x-lockdown: &lockdown # 防止对镜像本身的写访问 read_only: true # 防止容器内任何进程获取更多权限 security_opt: - "no-new-privileges=true" x-image-redis: &image image: "11notes/redis:8.2.3" <<: *lockdown services: redis: <<: *image environment: REDIS_PASSWORD: "${REDIS_PASSWORD}" TZ: "Europe/Zurich" networks: backend: volumes: - "redis.etc:/redis/etc" - "redis.var:/redis/var" tmpfs: - "/run:uid=1000,gid=1000" restart: "always" # 启动redis的副本 replica: <<: *image environment: REDIS_PASSWORD: "${REDIS_PASSWORD}" TZ: "Europe/Zurich" command: "--replica redis" networks: backend: volumes: - "replica.etc:/redis/etc" - "replica.var:/redis/var" tmpfs: - "/run:uid=1000,gid=1000" restart: "always" # 仅以纯内存方式启动Redis in-memory: <<: *image environment: REDIS_PASSWORD: "${REDIS_PASSWORD}" TZ: "Europe/Zurich" command: "--in-memory" networks: backend: volumes: - "in-memory.etc:/redis/etc" tmpfs: - "/run:uid=1000,gid=1000" restart: "always" # 通过redis-cli执行CLI命令 cli: <<: *image depends_on: redis: condition: "service_healthy" restart: true environment: REDIS_HOST: "redis" REDIS_PASSWORD: "${REDIS_PASSWORD}" TZ: "Europe/Zurich" # 以命令模式启动redis entrypoint: ["/usr/local/bin/redis", "--cmd"] # 按顺序执行的命令 command: - PING - --version - SET key value NX - GET key networks: backend: # 用于查看数据库的演示容器 gui: image: "redis/redisinsight" environment: RI_REDIS_HOST0: "redis" RI_REDIS_PASSWORD0: "${REDIS_PASSWORD}" RI_REDIS_HOST1: "replica" RI_REDIS_PASSWORD1: "${REDIS_PASSWORD}" RI_REDIS_HOST2: "in-memory" RI_REDIS_PASSWORD2: "${REDIS_PASSWORD}" TZ: "Europe/Zurich" ports: - "3000:5540/tcp" networks: backend: frontend: volumes: redis.etc: redis.var: replica.etc: replica.var: in-memory.etc: networks: frontend: backend: internal: true
要了解如何更改此容器镜像的默认UID/GID,请参考RTFM。
| 参数 | 值 | 描述 |
|---|---|---|
user | docker | 用户名 |
uid | 1000 | 用户标识符 |
gid | 1000 | 组标识符 |
home | /redis | docker用户的主目录 |
| 参数 | 值 | 默认值 |
|---|---|---|
TZ | 时区 | |
DEBUG | 启用容器镜像和应用的调试选项(如果可用) | |
REDIS_PASSWORD | 用于身份验证的密码 | |
REDIS_PASSWORD_FILE (可选) | 包含身份验证密码的密钥文件(查看compose.secrets.yml) | |
REDIS_IP (可选) | Redis服务器IP | 0.0.0.0 |
REDIS_PORT (可选) | Redis服务器端口 | 6379 |
REDIS_HOST (可选) | 使用--cmd时上游Redis服务器的IP | |
REDISCLI_HISTFILE (可选) | 禁用redis-cli的历史记录(出于安全考虑) | /dev/null |
以下是镜像的主要标签。每个提交及其简写sha256值也有对应的标签。
我的观点是:latest标签是一个坏习惯,根本不应该使用。许多开发者在新版本中引入破坏性变更,这会给使用:latest的人带来麻烦。如果您不想将标签更改为最新的语义化版本,只需使用语义化版本的短版本。不使用:8.2.3,您可以使用:8或:8.2。由于这些标签会在每个新版本中更新为软件的最新版本,使用它们与使用:latest类似,但至少固定在主版本或次版本上,理论上不会引入破坏性变更。
如果您仍然坚持使用此应用的最新版本,只需使用:rolling标签,但请注意!您将立即获得应用的最新版本,无论是否有破坏性变更或安全问题。风险自负!
docker pull 11notes/redis:8.2.3 docker pull ghcr.io/11notes/redis:8.2.3 docker pull quay.io/11notes/redis:8.2.3
此镜像不基于其他镜像,而是使用scratch作为基础层。 该镜像包含以下添加的无发行版层:
此镜像的使用风险由您自行承担。更新镜像到不同版本前,请务必进行备份。查看发布说明了解破坏性变更。如果使用此镜像遇到问题,请提交issue,谢谢。如果您有问题或建议,请创建新的讨论而非issue。您可以在github上找到我的所有其他仓库。
创建于 03.11.2025, 06:32:49 (CET)===SHORT_DESC=== 以无root权限、无发行版的方式安全运行Redis,具有轻量级、高安全性特点,支持命令模式、副本模式和纯内存模式等多种启动方式。 ===FULL_DESC===# REDIS !size!5px!pulls!5px[]([***]
以无root权限、无发行版的方式安全运行Redis。
对于构建实时数据驱动应用的开发者,Redis是首选的、最快且功能最丰富的缓存、数据结构服务器以及文档和向量查询引擎。
!REDISINSIGHT
我能用它做什么? 该镜像将以无root权限和无发行版方式运行Redis,以提高安全性。除了比大多数镜像更安全、更精简外,它还提供额外的启动参数,可将Redis启动为命令模式、副本模式或纯内存数据库(不持久化数据到磁盘)。只需提供所需命令即可:
REDIS_HOST环境变量指定的Redis数据库执行所有命令为什么我应该运行此镜像而不是其他已存在的镜像? 好问题!因为...

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务