首页 > 数据库 >Docker 下 Redis 数据库的持久化

Docker 下 Redis 数据库的持久化

时间:2023-04-05 13:44:49浏览次数:26  
标签:容器 数据 Redis 数据库 redis Docker data 目录

1、Docker 容器的数据卷

  Docker 是将系统与运行的环境打包成容器来运行,当容器删除后,容器里的系统自然也就没有了。但是,在实际的项目中,希望 Docker 容器产生的数据能够持久化,同时容器之间也能够共享数据。Docker 提供了数据卷技术来实现这些需求。   数据卷就是目录或文件,存在于一个或多个容器中,由 Docker 挂载到容器上,完全独立于容器的生存周期,Docker 不会在容器删除时删除其挂载的数据卷。即容器删除了,数据卷仍然存在,从而实现了容器数据的持久化。 数据卷的特点: (1)数据卷是宿主机中的一个目录或文件 (2)当容器目录和数据卷目录绑定后,对方的修改会立即同步 (3)一个数据卷可以被多个容器同时挂载,可在容器之间共享或重用数据 (4)一个容器也可以被挂载多个数据卷   2、数据卷的实现 创建启动容器时,使用–v 参数来设置数据卷 语法:docker run -v /宿主机绝对路径目录:/容器内目录 镜像名.....   3、 Docker 容器下 Redis 的数据持久化 3.1 将容器内 Redis 的 RDB 持久化数据保存到容器外的某个路径下 (1)创建 redis 容器,并挂载数据卷 (2)在 cmd 中运行以下命令: docker run -d --name redis_1 -p 6379:6379 -v /d/redis/data:/data redis (3)命令解释:-v /d/redis/data:/data -v:实现宿主机的目录和容器内目录的映射; /d/dockerdata/redis/data 表示”D:\redis\data”路径,该路径如果不存在,Docker 会自动创建; /data 表示容器内的路径:该路径是容器内 redis 的自动创建的目录; 命令成功执行,会出现相关信息,表示容器正在运行。   注意:如果“D:\redis\data”事先没有创建,Docker 会自动创建该路径。 (4)使用 redis-cli.exe 连接 redis 容器,写入数据,执行 RDB 操作。 (5)查看实现宿主机的目录和容器内目录的映射 “D:\redis\data”路径下,出现了 dump.rdb 文件 执行命令,进入容器内,可以发现 data 路径下也有 dump.rdb 文件 (6)停止然后再次启动 redis_1 容器; (7)可以发现,可以直接查询到 k1 的值。这说明,虽然 redis_1 停止时,数据丢失了,但是当它重新启动时,读取了“D:\redis\data”里的 dump.rdb 文件,恢复了数据。   3.2 将容器内 Redis 的 AOF 持久化数据保存到容器外的某个路径下 (1)创建 redis 容器,并挂载数据卷 (2)在 cmd 中运行以下命令: docker run -d --name redis_2 -p 6379:6379 -v /d/redis/data:/data redis --appendonly yes (3)命令解释:--appendonly yes 该命令表示 redis_2 容器开启 AOF 持久化模式。但是,该参数只在当前命令中有效。 命令成功执行,会出现相关信息,表示容器正在运行。   (4)使用 redis-cli.exe 连接 redis 容器,写入数据 (5)查看实现宿主机的目录和容器内目录的映射 “D:\redis\data”路径下,出现了 appendonly.aof 文件,而且该文件中写入了操作命令。 (6)执行命令,进入容器内,可以发现 data 路径下也有 appendonly.aof 文件。 (7)同样,当 redis_2 重新启动时,可以读取“D:\redis\data”里的 appendonly.aof文件,恢复数据。   如果容器创建或运行时出错,可使用以下命令查询容器的日志信息:   docker logs 容器名或 ID



标签:容器,数据,Redis,数据库,redis,Docker,data,目录
From: https://www.cnblogs.com/qiqi-yi/p/17289279.html

相关文章

  • Redis 数据库的持久化
    1、Redis持久化1.1什么是持久化持久化可以理解为数据的永久存储,就是将数据存储到一个不会丢失的地方。如果把数据放在内存中,电脑关闭或重启数据就会丢失,所以放在内存中的数据不是持久化的,而放在磁盘就是一种持久化。 1.2Redis的持久化Redis的数据存储在内存......
  • Redis 数据库的事务机制
    1、Redis事务机制1.1事务的定义事务是指一系列操作数据库的步骤,这一系列的操作步骤,要么完全地执行,要么完全地不执行。 1.2Redis的事务同样,Redis中的事务也是一组命令的集合,至少是两个或两个以上的命令。Redis事务是一个单独的隔离操作,事务中的所有命令都会序......
  • centos快速的安装和卸载docker
    在centos系统上快速安装docker-ce,废话不多说,直接上shell代码,适配与所有centos和ali-cloud系统: #安装依赖包yuminstall-yyum-utilsdevice-mapper-persistent-datalvm2 #添加Docker软件包源,我们这里配置了阿里云的镜像源yum-config-manager......
  • Redis事务与Lua脚本
    Redis的事务没办法保证一致性,使用Lua脚本也不能保证。Lua脚本能保证一致性,而且比redis的事务实习要简洁健壮。转载:https://maimai.cn/article/detail?fid=1538576512&efid=SQ3XsywteU9lIxil766Lxw......
  • 性能环境之Jenkins+Maven自动化部署SpringBoot压测环境(Docker篇)
    前言在上文性能环境之Jenkins+Maven自动化部署SpringBoot压测环境(实战篇)中我们介绍了常规部署流程,本文将在上文的基础上扩展Jenkins+Maven+Docker自动化部署我们的压测环境。关于DockerDocker在这里有什么用?Docker,是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到......
  • 蓝图的使用、g对象、数据库连接池
    蓝图的使用#blueprint翻译过来的,称之为蓝图#作用是:之前全在一个py中写flask项目,后期肯定要划分目录#不用蓝图,划分目录no_blueprint_flask#项目名src#核心源码位置__init__.py#包里面实例化得到了app对象,mode......
  • flask_day03:蓝图的使用、g对象、数据库连接池
    目录回顾蓝图的使用不用蓝图,划分目录蓝图的使用步骤使用蓝图,划分小型项目目录使用蓝图,划分大型项目目录g对象g对象是什么?使用场景g和session有什么区别?数据库连接池flask操作mysql使用步骤回顾1.cbv的使用 写一个类继承MethodView,写get、post。。。 类属性decorators=[auth......
  • mysql数据库安装
    参考连接1、超级详细的mysql数据库安装指南2、MySQL安装过程中,出现CheckRequirements缺少C++动态库即MicrosoftVisualC++2013Redistributable问题二、安装步骤(基本和第一个参考链接相同,下面是差异的地方)1、检查安装要求,不可以点击Next,点击Execute会出现错误。提示没有......
  • 数据库系统原理之数据库应用设计与开发实例
    数据库应用设计与开发实例第一节需求描述与分析在此,结合某高校个性化课程在线选课的实际需求,给出一个简化的需求分析一、功能性需求1管理员后台模块学生信息管理教师信息管理课程信息管理班级信息管理2学生使用模块查询课程浏览所选课程查询成绩3教师使用模......
  • Redis未授权访问Getshell
    漏洞成因有些redis绑在0.0.0.0:6379,没有开启验证或者没有设置对未知ip来源进行限制以及默认的空密码就导致了redis默认访问但是这个普遍的漏洞极可能造成后门植入getshell,也可能造成反弹shell权限维持,甚至会造成ssh直接免密连接服务器开始复现搭建环境服务器操作系统为ubuntu......