Docker 托管的 redis 丢失数据

Posted

技术标签:

【中文标题】Docker 托管的 redis 丢失数据【英文标题】:Docker hosted redis losing data 【发布时间】:2018-11-15 11:16:38 【问题描述】:

我正在使用带有卷的docker-hub 图像运行独立的 Redis 对于persistent storage(--appendonly yes),但是过了一会儿,Redis 中的所有键都消失了。 我还没有为任何键设置EXPIRE 时间。 使用以下命令运行 docker:

docker run  -p 6379:6379 -v redis-vol:/data -d redis redis-server --appendonly yes

谁能告诉我可能出了什么问题?

谢谢。

【问题讨论】:

你的 dockerized Redis 服务器是否可以被外界访问(无需密码)?如果是这样,可能有人在尝试 p0wn 您的服务器时运行 FLUSHALL。 是的。有人在运行 FLUSHALL。设置密码后,它工作。谢谢。 【参考方案1】:

是的,每次创建新容器时都会丢失密钥,尽管您有一个永久存储“卷”。 您缺少的是设置环境变量ALLOW_EMPTY_PASSWORD=yesDISABLE_COMMANDS=FLUSHDB,FLUSHALL,CONFIG 如果您使用docker-compose 文件,您可以简单地将它们添加为:

redis:
image: 'bitnami/redis:latest'
environment:
  - ALLOW_EMPTY_PASSWORD=yes
  - DISABLE_COMMANDS=FLUSHDB,FLUSHALL,CONFIG
container_name: haproxy_redis_auth_redis
ports:
  - "6379:6379"
volumes:
  - redis-data:/bitnami/redis/data

在这种情况下,别忘了让你的应用依赖redis服务

application:
build: .
depends_on:
  - db
  - redis

我在这里查看后遇到了同样的问题: https://hub.docker.com/r/bitnami/redis/

【讨论】:

以上是关于Docker 托管的 redis 丢失数据的主要内容,如果未能解决你的问题,请参考以下文章

docker安装redis

Docker redis集群搭建

Docker 学习笔记总结

Docker 学习笔记总结

docker安装redis

docker配置redis持久化