Docker搭建Redis主从服务器

一、环境搭建

    1、docker安装,请参考阿里云开发者社区镜像安装。可在阿里云开发者社区中查找或打开下面地址:https://yq.aliyun.com/articles/110806?spm=5176.8351553.0.0.12f01991aHmnyd

    2、redis镜像下载,可从阿里云镜像库或Docker Hub镜像库下载,执行命令docker pull redis即可下载,如下图所示,

    

    下载好redis镜像后,就可以用docker run -d -p 6379:6379 --name docker-redis redis启动一个redis容器,下载搭建一个1主1从的redis服务。

二、Redis Docker容器

    这里搭建1主1从的redis服务(需要的话也可以搭建多个从服务器),因此需要启动两个redis docker容器,从服务器连接到主服务器中。

    1、准备redis容器

docker run -it --name docker-redis-master --mount type=bind,source=/home/leesia/docker/redis/v,target=/leesia redis /bin/bash

docker run -it --name docker-redis-slave1 --mount type=bind,source=/home/leesia/docker/redis/v,target=/leesia --link docker-redis-master:master redis /bin/bash

    命令说明:

    第一条命令是启动主服务容器,容器名为docker-redis-master,mount 参数挂载了宿主机的/home/leesia/docker/redis/v到容器的/leesia目录,宿主机的/home/leesia/docker/redis/v目录必须存在,否则会报错,可以参考--mount参数配置。/bin/bash是容器启动时进入伪终端。

    第二条命令是启动从服务容器,容器名为docker-redis-slave1,同样挂载了宿主机的/home/leesia/docker/redis/v到容器的/leesia目录。link参数是连接到其他容器,这里连接到主服务容器docker-redis-master,并设置别名为master。 /bin/bash是容器启动时进入伪终端。

    分别执行这两个命令,可启动redis容器,并进入容器。在容器中按ctrl+p,再ctrl+q可从容器退出,并保持容器继续运行,退出后用执行docker exec -it container_id /bin/bash再次进入容器。

    启动主服务容器:

    

    启动从服务容器:

    

    注意:这两条命令执行后只是启动了两个容器,容器中的redis服务并没有启动。可以通过docker ps查看启动的容器信息。也可以通过docker inspect命令查看容器的详情信息,也可以通过docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_id 命令查看两个容器的IP,容器IP在redis的配置文件中会用到。执行该命令后,可返回主服务容器和从服务容器的IP。

    docker ps查看容器信息:


    docker inspect查看容器IP信息:

    

这里可以看到主从服务容器的IP分别为172.17.0.2和172.17.0.4。

    2、配置redis

    redis的配置文件为redis.conf,但是redis镜像中并不包含该文件,所以需要手工将宿主机的redis.conf文件配置到redis容器中。可以将该文件复制到/home/leesia/docker/redis/v目录里,还记得启动redis容器的mount参数吗,复制后,即可以在容器中的/leesia目录下看到redis.conf文件。

    将/home/leesia/docker/redis/v目录下的redis.conf文件再复制一份,并将两文件重命名为redis-master.conf和redis-slave.conf,分别表示主服务容器的配置文件和从服务容器的配置文件。

    在宿主机中查看/home/leesia/docker/redis/v:

    

    在容器里查看/leesia目录,看到的内容和宿主机上的一样的:

    

    由于容器里没有vim编辑器,因此可以在宿主机中分别修改这两个文件,配置项如下:

redis-master.conf
    port 6379
    bind 172.17.0.2

    daemonize yes

redis-slave.conf
    port 6379
    bind 172.17.0.4
    daemonize yes

    slaveof master 6379

    配置文件说明:port表示redis的端口,bind表示容器的IP,还记得上面用docker inspect命令查看docker容器的IP吗,就在这里用到了,slaveof master 6379表示从服务器,master为主服务容器的别名,在从服务容器的启动命令中连接主服务定义了别名,这里也可以用主服务容器的IP 172.17.0.2。

    将修改好的两个文件分别复制到主从容器的/usr/local/bin目录下,并命名为redis.conf。

    复制到主服务容器中:

    

    复制到从服务容器中:

    

    其他redis配置文件

    在容器的/var/lib目录下创建redis目录;在/var/log目录下创建redis目录,并在新建的redis目录下创建redis-server.log日志文件。主从服务容器中都需要。

    

    3、启动redis服务

    分别在主从容器的/usr/local/bin目录下执行redis-server redis.conf命令,启动redis服务。这样,redis主从服务器已经搭建。

    启动主服务:

    

    启动从服务:

    

三、验证

    在主服务容器的/usr/local/bin目录下执行redis-cli -h 172.17.0.2 -p 6379,连接redis服务,执行set master 'master',存入一个master键。

    

    在从服务容器的/usr/local/bin目录下执行redis-cli -h 172.17.0.4 -p 6379,连接redis服务,执行get master,返回'master',说明主服务器将数据同步到了从服务器中。

    

    好了,这样就搭建了一个1主1从的redis服务器




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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值