还有8天就是 2020 鼠年春节,东南也将踏上返乡之路,在这里提前祝您、万事如意、阖家欢乐,咱们节后再见!
默认情况下使用 docker
创建 redis
容器,数据将在重启 redis
容器后丢失。
我们需要持久化 redis
容器内的数据,需要做两点:
redis
自身指定持久化方式,这里选择 AOF机制 (RDB也可以)。宿主机: CentOS 7.3 # 建议使用 ubuntu 最新LTS版本
Docker: 1.13.1 # 建议使用最新 stable版本
容器镜像: redis:3
1. 创建容器
docker run --name redis3 -tid \
-e TZ=Asia/Chongqing \
-v redis-data:/data \
redis:3 --appendonly yes
docker 的 -v
参数选项,是为redis
容器指定持久化的数据卷。
而redis
容器内的--appendonly yes
参数,则是启用 redis
的 AOF数据持久化选项。
如果希望使用宿主机的端口,方便外部访问到redis
服务,需要使用-p
参数选项。
2. 测试 redis 容器
1) 进入容器
docker exec -ti redis3 /bin/bash
2) 写入数据
redis-cli
127.0.0.1:6379> dbsize
(integer) 0
127.0.0.1:6379> set name dongnan
OK
3) 读取数据
127.0.0.1:6379> get name
"dongnan"
4) 退出容器
127.0.0.1:6379> quit
root@eaee2631fd55:/data# exit
exit
3. 验证数据持久化
默认情况下docker的数据卷保存在以下目录:
/var/lib/docker/volumes/volumes-name/_data
如果你还不了解数据卷,请参考这篇文章《如何使用Docker数据卷?》
1) 查看AOF文件
cd /var/lib/docker/volumes/redis-data/_data/
tail appendonly.aof
SELECT
$1
0
*3
$3
set
$4
name
$7
dongnan
2) 销毁创建的容器
docker stop redis3
docker rm redis3
3) 再次创建容器
由于数据卷已经存在,直接挂载到容器内,并使用 AOF 文件。
docker run --name redis3 -tid \
-e TZ=Asia/Chongqing \
-v redis-data:/data \
redis:3 --appendonly yes
4) 查询数据
docker exec -ti redis3 redis-cli get name
"dongnan"
由于AOF文件的存在,可以直接读取到这个 key 。
最后来总结下文章中的知识点
公众号回复 docker 获得文章专题
欢迎加入QQ群: 703906133
欢迎关注微信公众号: 运维录