使用docker搭建redis主从

  • 2019-08-11
  • 380
Docker   Redis  

一、构建 Docker 环境

1、创建 dockerfile

  1. FROM centos:latest
  2. RUN groupadd -r redis && useradd -r -g redis redis
  3. RUN yum -y update && yum -y install epel-release && yum -y install redis && yum -y install net-tools
  4. EXPOSE 6379

 
2、构建镜像

  1. docker build -t docker-test .

 
3、查看当前镜像

  1. docker iamges
  1. REPOSITORY TAG IMAGE ID CREATED SIZE
  2. docker-test latest ccebd30e466a 12 minutes ago 396MB
  3. centos latest 470671670cac 7 weeks ago 237MB

 
4、查看docker默认的网络类型

  1. docker network ls
  1. NETWORK ID NAME DRIVER SCOPE
  2. a43e79987e98 bridge bridge local
  3. 6b73067403dc host host local
  4. b8ad4981e57e none null local

 
5、创建自定义网络类型

  1. docker network create --subnet=172.10.0.0/16 haveyb-network

 

二、搭建 Redis 主从

1、创建 redis-master 容器
  1. docker run -itd --name redis-master --net haveyb-network -p 6380:6379 --ip 172.10.0.2 docker-test

参数解释:

-i: 以交互模式运行容器,通常与 -t 同时使用

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用

-d: 后台运行容器,并返回容器ID;

--name: 为创建的容器命名

--net: 指定网络模式(这里指定刚才创建的自定义网络模式)

-p: 端口映射,格式为:主机(宿主)端口:容器端口

--ip: 为容器制定一个固定的ip

后面再指定一下使用的镜像(这里使用的就是刚才创建的镜像 docker-test)

 

2、查看运行中的容器
  1. docker ps -a
  1. CONTAINER ID IMAGE COMMAND CREATED
  2. dc9344bbd25f docker-test "/bin/bash" 2 minutes ago
  3. STATUS PORTS NAMES
  4. Up 2 minutes 0.0.0.0:6380->6379/tcp redis-master

注:查看某个网络下容器的ip地址

  1. docker network inspect haveyb-network

 

3、创建 redis-slave1、redis-slave2 容器
  1. docker run -itd --name redis-slave1 --net haveyb-network -p 6381:6379 --ip 172.10.0.3 docker-test
  2. docker run -itd --name redis-slave2 --net haveyb-network -p 6382:6379 --ip 172.10.0.4 docker-test

 

4、配置 redis-master 容器

(1)进入redis-master 容器

  1. docker exec -it redis-master bash

注:退出容器 exit

(2)修改redis.conf 配置文件

  1. vi /etc/redis.conf

(3)修改参数 bind 127.0.0.1 为 0.0.0.0

  1. bind 0.0.0.0

(4)设置主redis 密码

  1. requirepass YourPasswordSettings

(5)启动主redis

  1. redis-server /etc/redis.conf &

(6)redis-cli

  1. redis-cli
  2. auth yourPasswordSettings

 

5、配置 redis-slave1

(1)进入redis-slave1 容器

  1. docker exec -it redis-slave1 bash

(2)修改redis.conf 配置文件

  1. vi /etc/redis.conf

(3)修改参数 bind 127.0.0.1 为 0.0.0.0

  1. bind 0.0.0.0

(4)设置 masterauth,添加以下代码(主redis设置密码后,从redis连接需要此参数验权)

  1. masterauth yourPasswordSettings

(5)设置 slaveof (设置主 redis 的 ip 和 port)

  1. slaveof 172.10.0.2 6379

(5)启动从redis

  1. redis-server /etc/redis.conf &

(6)redis 客户端

  1. redis-cli

 

6、配置 redis-slave2

同配置 redis-slave1

 

7、在redis -cli中执行 info replication 可以查看主从信息
redis-master

redis-slave1

 

8、在 redis-master 中写入key,redis-slave1 和 redis-slave2 已经可以获取了

注:取消某个从节点:在从节点中执行 slave no one

 

 



Top