Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。
docker包括以下几个组成部分:
镜像(Image)容器(Container)仓库(Repository) 安装准备
安装环境以centos7为例;安装可参考docker官网文档
1、 环境要求
docker要求CentOS 系统的内核版本高于 3.10 ,安装之前首先要验证你的CentOS 版本是否支持 Docker 。
查看你当前的内核版本(建议使用xshell连接虚拟机进行命令操作)
uname -r
2、更新yum
更新yum(docker与yum版本可能不兼容)
yum update --skip-broken
开始安装1、使用 yum 安装命令
yum install docker
2、配置阿里加速镜像(配置加速镜像可以更快的拉取镜像)
1、进入阿里云官网,并且登录,点击控制台
2、进入控制台后,点击左上角的产品与服务,再选择容器镜像服务
3、进入容器镜像服务后,点击镜像加速器
4、根据相应要求修改配置文件即可
3、查看安装情况并启动docker
docker -version //查看docker版本 Systemctl start docker //启动 docker
二、搭建Redis集群 准备工作 1、安装docker ,并启动
2、下载Redis配置文件
由于redis容器中没有redis.conf 和sentinel.conf 文件,所以先去官网下载redis的Linux系统安装包(.tart.gz)文件夹,用于配置文件的挂载。
1、拉取redis4.0.14版本的镜像
docker pull redis:4.0.14
2、创建Redis挂载目录
新建 /docker/redis 文件夹
在redis文件夹下新建/conf ,用于挂载conf文件
在redis文件夹下新建/data ,挂载redis数据文件,防止docker容器损坏而导致数据丢失
在conf文件夹下新建6370、6371、6372三个文件夹用于挂载三个redis容器
将 redis.conf 和 sentinel.conf 文档上传到到6370、6371、6372文件夹中
3、修改Redis配置文件 redis.conf
bind 0.0.0.0 //用于接收所有端口的连接
requirepass “password” //设置redis连接密码
masterauth “password” //设置主从连接的密码
4、执行命令,生成Redis容器(按命令生成redis-6370、redis-6371、redis-6372三个容器)
docker run -p 6370:6379 --name redis-6370 -v /docker/redis/conf/6370.conf:/data/redis/6370.conf -v /docker/redis/conf/sentinel-26370.conf:/data/sentinel/sentinel-26370.conf -v /docker/redis/data:/data -d docker.io/redis:4.0.14 redis-server /data/redis/6370.conf --appendonly yes
设置Redis主从模式-p:设置端口映射,将容器内的6379映射到虚拟机下的6370端口
-name: 设置容器名称
-v: 设置目录挂载,将虚拟机下的/docker/redis/conf/6370.conf文件挂载到容器data/redis/6370.conf目录下 ,sentinel.conf同理
-d:指出生成容器的镜像
redis-server 启动redis容器
–appendonly yes 设置启动数据同步
1、查看容器内部IP 172.17.0.X
docker inspect containerID
2、进入redis容器内
docker exec -ti containerID /bin/bash
3、进入redis客户端
redis-cli
选择一个redis作为master,其他的redis作为slave
对于作为slave的容器进入客户端执行 slaveof master容器IP 6379(端口号统一为6379)
eg:slaveof 172.17.0.2 6379
4、查看主从模式是否设置成功
auth password //权限验证;输入密码info replication // 查看当前redis的状态信息
对于master会显示slave个数及IP,对于slave会显示master信息
在master客户端执行set k1 v1,存储数据
在slave客户端执行get k1 获得v1,即表示主从模式设置成功
1、进入/docker/redis/conf/637X文件夹下编辑sentinel.conf 文件
删除bind 0.0.0.0
更改 sentinel monitor mymaster 172.17.0.3 6379 1 设置master的IP
增加sentinel auth-pass mymaster password 设置连接master的密码
2、进入redis容器内
docker exec -ti containerID /bin/bash
3、 执行哨兵配置文件,启动哨兵监控
redis-sentinel sentinel.conf --sentinel
4、测试哨兵模式是否成功
查看运行的docker容器; 停掉master容器
docker ps docker stop containerID(master)
查看sentinel运行日志,是否有选举
进入还在运行的redis容器客户端执行info replication 查看状态信息
可以看到新的master被选举出来,即哨兵模式搭建成功
修改springboot项目application.yml配置文件
其他注释掉host、port配置
增加sentinel:
master: mymaster
nodes: 10.149.137.8:26370,10.149.137.8:26371,10.149.137.8:26372
IP为虚拟机服务器的IP,端口为映射的哨兵端口
修改配置文件,在挂载目录下修改总是不便,且无法观察到哨兵模式是否在运行状态,可以通过在容器中安装相应插件,实现文件编辑和进程查看的功能。
1、先更新apt-get update
2、安装vim编辑器 apt-get install -y vim
3、安装ps命令,查看进程 apt-get install procps