Centos7使用docker快速安装redis(一主一从一哨)

一、拉取镜像及创建挂载文件

#拉取redis镜像
docker pull redis:3.2
#用于挂载redis、sentinel数据文件(这里是单机)
mkdir -p /docker/redis/redis-6379/data
mkdir -p /docker/redis/redis-6380/data
#创建redis.conf master配置文件
vi /docker/redis/redis-6379/redis.conf

port 6379
logfile "redis.log"
dir /data
appendonly yes
appendfilename appendonly.aof
masterauth 123456
requirepass 123456

#创建redis.conf slave配置文件
vi /docker/redis/redis-6380/redis.conf

port 6380
logfile "redis.log"
dir /data
appendonly yes
appendfilename appendonly.aof
slaveof 192.168.21.204 6379
masterauth 123456
requirepass 123456

#dir:工作目录
#logfile:日志文件在工作目录下
#slaveof:指明为主机一的从机
#requirepass:redis客户端连接的认证密码,若不需要可不配置
#masterauth:主从redis同步的认证密码,与连接密码同,若不需要可不用配置
#appendonly:是否需要持久化,yes为需要

#创建哨兵
mkdir -p /docker/redis/sentinel-26380/data
vi /docker/redis/sentinel-26380/sentinel.conf

port 26380
logfile "sentinel.log"
dir /data
sentinel monitor mymaster 192.168.21.204 6379 1
# master节点发送ping命令,如果超过times毫秒没有收到回复,则判定该节点不可达
sentinel down-after-milliseconds mymaster 30000
# 主机挂了,从节点想主机发起复制数
sentinel parallel-syncs mymaster 1
# 故障转移的超时时间
sentinel failover-timeout mymaster 180000
sentinel auth-pass mymaster 123456

二、启动容器

1、在/docker/redis/redis-6379/下创建docker-compose.yml文件

vi /docker/redis/redis-6379/docker-compose.yml

version: '3.5'
services:
  master:
    image: redis:3.2
    container_name: redis-master-6379
    restart: always
    network_mode: "host"
    command: redis-server /etc/redis/redis.conf
    ports:
      - 6379:6379
    volumes:
      - /docker/redis/redis-6379/data:/data
      - /docker/redis/redis-6379/redis.conf:/etc/redis/redis.conf
  
 名词  描述
 version  docker文件的版本
 image  指定容器镜像就是之前拉取的redis镜像
 container_name  给这个镜像起一个别名
 restart  always:表名开机自启动
 command  相当于执行一些命令   (--requirepass 指定redis密码  --appendonly yes 这个命令是用于开启redis数据持久化)
 ports  端口映射,将容器的端口映射到对应宿主机的端口
 volumes

 数据卷的映射.因为一旦容器停止了那么里面的数据也没有.所以我们需要把这个数据文件放在外面,然后映射到容器中

 

 

 

 

 

 

 

 

 

2、在/docker/redis/redis-6380/下创建docker-compose.yml文件

vi /docker/redis/redis-6380/docker-compose.yml

version: '3.5'
services:
  slave:
    image: redis:3.2
    container_name: redis-slave-6380
    restart: always
    network_mode: "host"
    command: redis-server /etc/redis/redis.conf
    ports:
      - 6380:6380
    volumes:
      - /docker/redis/redis-6380/data:/data
      - /docker/redis/redis-6380/redis.conf:/etc/redis/redis.conf

2、通过docker-compose分别启动主从容器

#创建容器并启动服务
docker-compose up -d
#停止服务并删除容器
docker-compose down
#查看服务启动日志
docker logs -f 容器Id

3、验证主从

#进入master redis容器
docker exec -it 容器Id bash

#验证master
root@505789210a7f:/data# redis-cli 
127.0.0.1:6379> info
NOAUTH Authentication required.
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> set name test
OK
127.0.0.1:6379> get name
"test"
127.0.0.1:6379>

#验证slave
root@2357840a7f23:/data# redis-cli 
127.0.0.1:6380> info
NOAUTH Authentication required.
127.0.0.1:6380> auth 123456
OK
127.0.0.1:6380> get name
"test"
127.0.0.1:6380>

三、哨兵模式

vi /docker/redis/sentinel-26380/docker-compose.yml

version: '3.5'
services:
  sentinel:
    image: redis:3.2
    container_name: redis-sentinel
    command: redis-sentinel /usr/local/etc/redis/sentinel.conf
    restart: always
    network_mode: "host"
    ports:
      - 26380:26380
    volumes:
      - /docker/redis/sentinel-26380/data:/data
      - /docker/redis/sentinel-26380/sentinel.conf:/usr/local/etc/redis/sentinel.conf

你可能感兴趣的:(Docker)