跳转至

如何创建持久化 Redis Docker容器?


2017-09-05 by dongnan

目标

  1. docker 环境下,创建 数据持久化redis 容器。
  2. 解决默认情况下创建的 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"

可以看到,虽然第一个容器销毁了,但是数据卷中存储的数据在第二个容器中仍然可以读取。

参考

回到页面顶部