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=yes
和DISABLE_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 丢失数据的主要内容,如果未能解决你的问题,请参考以下文章