【Docker】Docker安装Redis,并配置数据备份同步到宿主机

请添加图片描述


专栏精选文章

  1. 《Docker是什么?Docker从介绍到Linux安装图文详细教程》
  2. 《30条Docker常用命令图文举例总结》
  3. 《Docker如何构建自己的镜像?从镜像构建到推送远程镜像仓库图文教程》
  4. 《Docker多个容器和宿主机之间如何进行数据同步和数据共享?容器数据卷从介绍到常用操作图文教程》



1. 搜索镜像

Docker Hub 上查找 Redis 6.2 的镜像。

image-20221213123810980


2. 拉取镜像

$ docker pull redis:6.2

3. 查看镜像

$ docker images -a

image-20221213123947616


4. 创建容器


1)设置Redis配置文件

创建 Redis 容器时必须加容器数据卷,Redis 容器 redis1 中的数据实时备份和同步到宿主机上,即使 Redis 容器被删除,虽然容器中的所有数据都会丢失,但宿主机上还存有备份数据,只要 Redis 容器再次创建,宿主机上的数据就能自动同步会容器中。

在宿主机上新建文件夹,用于存放 Redis 数据卷同步的数据。

$ mkdir -p /xsh/apps/redis/conf
$ mkdir -p /xsh/apps/redis/data

image-20221213130704815

进入到宿主机的 /xsh/apps/redis/conf 目录下,创建一个空的 Redis 配置文件 redis.conf

$ cd /xsh/apps/redis/conf
$ touch redis.conf

把下面 redis.conf 文件模板内容拷贝到宿主机的空的 Redis 配置文件 redis.conf 中。Redis 6.2 的 redis.conf 官方来源 https://raw.githubusercontent.com/redis/redis/6.2/redis.conf

$ vim redis.conf

image-20221213132316955

接下来我们需要修改这个 Redis 配置文件。

首先,在第 903 行可以设置 Redis 登录密码。笔者为了方便偷懒,因此不设置密码。

requirepass 123456

然后,在第 75 行,允许 Redis 外部连接。否则就不能远程登录 Redis 了。监听的地址,默认是127.0.0.1,会导致只能在本地访问。修改为 0.0.0.0 则可以在任意 IP 访问,生产环境不要设置为 0.0.0.0,会有安全问题

bind 0.0.0.0

然后,在第 259 行,关闭后台守护进程。否则会和 docker run 命令的 -d 冲突,导致无法后台启动容器。

daemonize no

然后,第 1254 行,开启 Redis 数据持久化,这是可选的。

appendonly yes

修改完毕,按 :wq 保存退出。

通过容器数据卷带来的数据同步,我们只需要在宿主机的 Redis 配置文件 redis.conf 中修改配置,就能自动地实时同步到 Redis 容器内的 redis.conf ,从而达到配置容器内 Redis 的目的。


2)创建Redis容器

接下来是真正创建 Redis 容器。

$ docker run -d -p 6379:6379 --privileged=true \
-v /xsh/apps/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /xsh/apps/redis/data/:/data \
--name=redis1 \
redis:6.2 \
redis-server /etc/redis/redis.conf

image-20221213134741834

其中,--privileged=true 表示开启容器数据卷的权限;这次创建 Redis 中,增加了 2 个容器数据卷。

-v /xsh/apps/redis/conf/redis.conf:/etc/redis/redis.conf 表示 Redis 的配置文件与宿主机双向同步;

-v /xsh/apps/redis/data/:/data 表示 Redis 的数据与宿主机双向同步;

redis-server /etc/redis/redis.conf 表示启动 Redis 容器时,去容器内 /etc/redis/redis.conf 目录下读取 Redis 配置文件。

查看正在运行的容器。Redis 容器已经成功运行起来。

$ docker ps

image-20221213134835135


3)检验配置文件是否生效

以前台交互式进入 Redis 容器 redis1 的 redis-cli 客户端中。

$ docker exec -it redis1 redis-cli

image-20221213135432052

在宿主机的 Redis 配置文件 redis.conf 中,最大的数据库数量为 16 个。

image-20221213135602617

因为 Redis 的索引从 0 开始,所以我们选择数据库 15 是可以的,而选择数据库 16 是非法的。

image-20221213135743163

那么为了证明修改宿主机上的配置文件 redis.conf 会自动同步进 Redis 容器内并生效。我们在宿主机中,把配置文件中的最大数据库数量设置为 10 个。

$ vim /xsh/apps/redis/conf/redis.conf
databases 10

image-20221213140100553

:wq 保存退出。

然后,重启 Redis 容器 redis1 让配置文件生效。

$ docker restart redis1

image-20221213140321667

再次以前台交互式进入 Redis 容器 redis1 的 redis-cli 客户端中。

$ docker exec -it redis1 redis-cli

选择数据库 15 ,查看是否允许。

select 15

image-20221213140443923

修改前是能够选择数据库 15 的 ,但现在不允许选择数据库 15 了,说明宿主机与容器内的配置文件实现了双向同步,且配置文件成功生效。

选择数据库 9 和 10 ,查看是否允许。

image-20221213140647549

10 不允许选择而 9 可以选择。这也进一步说明我们在宿主机设置的最大数据库数量为 10 成功同步进 Redis 容器内并生效。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

卡皮巴拉不躺平

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值