如何创建持久化 Redis Docker容器?
2017-09-05 by dongnan
目标
- 在
docker
环境下,创建 数据持久化 的redis
容器。 - 解决默认情况下创建的
redis
容器,在重建redis
容器后数据丢失问题。
环境
redis: 3.2.10
Docker: 1.13.1
CentOS: 7.3
步骤
创建容器
docker run --name test-redis-2 -tid \
-v /data/container/irm/rds:/data \
redis:3 --appendonly yes
注意: -v
参数指定的宿主机目录(也可以不指定目录,使用 docker
默认存储目录)。
以及容器内 --appendonly yes
命令。
redis写入数据
# 进入容器
docker exec -ti test-redis /bin/bash
# 在容器内执行以下命令
redis-cli
127.0.0.1:6379> dbsize
(integer) 0
127.0.0.1:6379> set name dongnan
OK
127.0.0.1:6379> get name
"dongnan"
127.0.0.1:6379> quit
# 退出容器
root@eaee2631fd55:/data# exit
exit
数据文件
tail /data/container/irm/rds/appendonly.aof
SELECT
$1
0
*3
$3
set
$4
name
$7
dongnan
销毁容器
# 停止容器
docker stop test-redis
test-redis
# 删除容器
docker rm test-redis
test-redis
验证数据持久化
创建容器
注意,容器挂载了相同的数据卷(目录)。
docker run --name test-redis-2 -tid \
-v /data/container/irm/rds:/data \
redis:3 --appendonly yes
进入容器
docker exec -ti test-redis-2 /bin/bash
查询数据
root@6e41a092f297:/data# redis-cli
127.0.0.1:6379> dbsize
(integer) 1
127.0.0.1:6379> keys *
1) "name"
127.0.0.1:6379> get name
"dongnan"
可以看到,虽然第一个容器销毁了,但是数据卷中存储的数据在第二个容器中仍然可以读取。