专栏首页运维录使用 Docker 部署 redis 应用

使用 Docker 部署 redis 应用

还有8天就是 2020 鼠年春节,东南也将踏上返乡之路,在这里提前祝您、万事如意、阖家欢乐,咱们节后再见!

开始之前


默认情况下使用 docker 创建 redis容器,数据将在重启 redis容器后丢失。

我们需要持久化 redis容器内的数据,需要做两点:

  1. redis 自身指定持久化方式,这里选择 AOF机制 (RDB也可以)。
  2. 容器配置数据卷,用于保存 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 。

小结


最后来总结下文章中的知识点

  • AOF持久化方式则会记录每一个服务器收到的写操作,以追加的方式进行保存。 在服务启动时,这些记录的操作会逐条执行从而重建出原来的数据。
  • RDB持久化方式会在一个特定的间隔保存那个时间点的一个数据快照。
  • 两种方式是可以同时存在的,但当Redis重启时,AOF文件会被优先用于重建数据。

公众号回复 docker 获得文章专题

欢迎加入QQ群: 703906133

欢迎关注微信公众号: 运维录

本文分享自微信公众号 - 运维录(gh_70d95b8f5f7c),作者:东南

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-01-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Redis性能分析

    另一种是使用config set命令动态修改.例如下面使用config set命令将slowlog-log-slower-than设置为20000微秒.slow...

    用户1560186
  • 把 Docker镜像装到仓库需要几步?

    使用docker tag 命令为镜像打上标记,比如为网易蜂巢(已改名网易云)镜像仓库推送镜像,首先需要为镜像做好标记;

    用户1560186
  • 为什么Docker镜像大小与仓库中不一致?

    如果仔细观察你会发现,Docker宿主机中某个镜像所占用的磁盘空间和在 Docker Hub(仓库)上看到的镜像大小是不同的,例如 golang:1.9 在 D...

    用户1560186
  • 容器化技术docker~redis

    其实之前在学习java环境的时候,不可避免的就是如何在linux环境上面配置一些开发需要的环境,比如说tomcat这样的web应用服务器,将自己开发的项目放入里...

    码农王同学
  • Docker 安装 Redis

    可以在 https://hub.docker.com/_/redis , 选择合适的版本。一般选择带 alpine 版本的,alpine 是一个精简版的linu...

    Alone88
  • CentOS6 单节点安装Redis Sentinel

    Redis Sentinel模式简介 Redis-Sentinel是官方推荐的高可用解决方案,当redis在做master-slave的高可用方案时,假如ma...

    shaonbean
  • Docker + Redis 主从环境搭建

    redis.conf是Redis的核心配置文件,默认docker运行的redis是不存在配置文件的,这里可以先从官网下载:

    happyJared
  • redis高级教程与实例实践

    AI之禅
  • 使用 docker-compose 在 Docker 中启动带密码的 Redis

    在服务器上使用 docker-compose 启动一个 Docker 中的 Redis 时,配置文件没有生效,Redis 没有加密码,导致 redis 中被写入...

    木制robot
  • 配置Redis

    redis配置信息http://blog.csdn.net/ljphilp/article/details/52934933

    skylark

扫码关注云+社区

领取腾讯云代金券

,,