Docker-compose和Docker-consul的配置部署

[复制链接]

826

主题

826

帖子

446

积分

中级会员

Rank: 3Rank: 3

积分
446
分享到:
发表于 2022-6-29 11:43:09 | 显示全部楼层 |阅读模式
本文以Docker-compose和Docker-consu为例,为大家分析Docker原生编排工具的安装配置方法,阅读完整文相信大家对原生编排工具的安装配置方法有了一定的认识。
Docker原生编排工具一、docker-compose概念Compose默认管理对象是项目,通过子命令对项目中的一组容器进行生命周期的管理。
Compose项目由Python实现,实现上调用了Docker服务提供的API来对容器进行管理。
配置步骤1、安装Docker-ce引擎比较简单不在赘述,直接上shell脚本
#!/bin/bash#Docker引擎部署#安装依赖包yum install yum-utils device-mapper-persistent-data lvm2 -y#设置阿里云镜像源yum-config-manager --add-repo docker-ce.repo install -y docker-ce#关闭防火墙及增强型安全功能systemctl stop firewalld.servicesetenforce 0#启动Docker并设置为开机自启动systemctl start docker.servicesystemctl enable docker.service#网络优化echo "net.ipv4.ip_forward=1" >> /etc/sysctl.confsysctl -pservice network restart systemctl restart docker2、部署docker-compose#下载安装composecurl -L https://github.com/docker/compose/releases/download/1.25.1-rc1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose#提权方便调用chmod +x /usr/local/bin/docker-compose#建立compose站点mkdir /root/docker_compose3、compose练习实例Docker Compose配置常用字段
字段描述build dockerfile context指定Dockerfile文件名构建镜像上下文路径image指定镜像command执行命令,覆盖默认命令container name指定容器名称,由于容器名称是唯一的deploy指定部署和运行服务相关配置,只能在Swarm模式使用environment添加环境变量networks加入网络ports暴露容器端口,与-p相同,但端口不能低于60volumes挂载宿主机路径或命令卷restart重启策略,默认no,always, no-failure,unless-stopedhostname容器主机名Docker Compose常用命令
字段描述build重新构建服务ps列出容器up创建和启动容器exec在容器里面执行命令scale指定一个服务容器启动数量top显示容器进程logs查看容器输出的日志文件down删除容器、网络、数据卷和镜像stop/start/restart停止/启动/重启服务集合部署nginx+Tomcat
#建立compose文件vim /root/docker-compose/docker-compose.yml#compose版本号,有1、2、3version: '3.3'#服务名称services: nginx:#主机名 ?hostname: nginx#建立镜像需要的目录、dockerfile脚本名 ?build: ??context: ./nginx ??dockerfile: Dockerfile#映射宿主机端口 ?ports: ??- 1216:80 ??- 1200:443#工作组:同一集群一个名字 ?networks: ??- test#建立数据集的目录 ?volumes: ??- ./wwwroot:/usr/local/nginx/html tomcat: ?hostname: tomcat ?build: ??context: ./tomcat ??dockerfile: Dockerfile ?ports: ??- 888:8080 ?networks: ??- testnetworks: test:#需要建立新镜像的服务需要放在compose工作站点中[root@localhost docker_compose]# lsdocker-compose.yml nginx tomcat#建立容器“-f” 指定compose文件docker-compose -f docker-compose.yml up -d二、docker-consul集群+template实验准备名称角色IP地址预装环境centos7-1master192.168.142.66Docker-ce、Compose 3、Consul、Consul-templatecentos7-2slave1192.168.142.77Docker-ce、registratorcentos7-minslave2192.168.142.136Docker-ce、registratordocker-consul集群实验步骤master端
//安装Consul[root@localhost ~]# mkdir consul[root@localhost ~]# cd consul/[root@localhost consul]# unzip consul_0.9.2_linux_amd64.zip[root@localhost consul]# lsconsul consul_0.9.2_linux_amd64.zip后台启动
//移动文件,方便识别[root@localhost consul]# mv consul /usr/bin/[root@localhost consul]# consul agent \-server \-bootstrap \-ui \-data-dir=/var/lib/consul-data \-bind=192.168.142.66 \-client=0.0.0.0 \-node=consul-server01 &> /var/log/consul.log &[root@localhost consul]# jobs[1]+ 运行中 ???????consul agent -server -bootstrap -ui -data-dir=/var/lib/consul-data -bind=192.168.142.66 -client=0.0.0.0 -node=consul-server01 &>/var/log/consul.log &"agent" 使用agent代理功能
"-server" 提供server功能
"-bootstrap" ?参与选举为领袖
"-ui" ??提供用户界面
"-data-dir" ?参数存储位置
"-bind" ??绑定地址
"-node" ?定义节点名称
检查群集
//查看群集信息[root@localhost consul]# consul membersNode ??????Address ??????Status Type ?Build Protocol DCconsul-server01 192.168.142.66:8301 alive ?server 0.9.2 2 ????dc1//过滤leader信息[root@localhost consul]# consul info | grep leader ???leader = true ???leader_addr = 192.168.142.66:8300通过httpd api 获取集群信息
curl 127.0.0.1:8500/v1/status/peers ????//查看集群server成员
curl 127.0.0.1:8500/v1/status/leader ???//集群Raf leader
curl 127.0.0.1:8500/v1/catalog/services ???//注册的所有服务。
curl 127.0.0.1:8500/v1/catalog/nginx ?????//查看nginx服务信息
curl 127.0.0.1:8500/v1/catalog/nodes ????//集群节点详细信息
使节点服务器中的容器自动加入
//安装registrator(注册器)//该工具可检查容器运行状态自动 进行注册,还可注销docker容器的服务[root@localhost ~]# docker run -d \--name=registrator \--net=host \-v /var/run/docker.sock:/tmp/docker.sock \--restart=always \gliderlabs/registrator:latest \-ip=192.168.142.77 \consul://192.168.142.66:8500测试功能是否正常
[root@localhost ~]# docker run -itd -p:83:80 --name test-01 -h test01 nginx[root@localhost ~]# docker run -itd -p:84:80 --name test-02 -h test02 nginx[root@localhost ~]# docker run -itd -p:85:80 --name test-03 -h test03 httpd[root@localhost ~]# docker run -itd -p:86:80 --name test-04 -h test04 httpd验证群集是否建立成功
浏览器中输入http://192.168.142.66:8500,单击“NODES”,然后点击“consurl-seerver01”,即可看到五个服务(图形化界面)
建立template进行代理手工编译安装nginx
没啥说的,装呗。版本:nginx1.12.0
安装consul-template
template属于守护进程,用于实时查询consul集群信息,并实时使用模板进行配置文件的生成。
[root@localhost ~]# unzip consul-template_0.19.3_linux_amd64.zip//启用template命令[root@localhost ~]# mv consul-template /usr/bin/编写nginx配置文件模板
[root@localhost consul]# vim nginx.ctmpl ???//nginx配置文件的模板upstream http_backend { ????//服务器池的名称 {{range service "nginx"}} server {{.Address}:{{.Port}}; ??//调用变量:服务器节点的地址和端口 {{end}}}server { listen 110; server_name localhost 192.168.142.66; ??//master端地址 access_log /var/log/nginx/kgc.cn-access.log; index index.html index.php; location / { ????//请求头部信息的设定 ?proxy_set_header HOST $host; ?proxy_set_header X-Real-IP $remote_addr; ?//后端服务器IP ?proxy_set_header Client-IP $remote_addr; ?//client的IP ?proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; ?//forward跳转地址 ?proxy_pass http://http_backend; ????//请求跳转给http_backend服务器池 }}进行配置
//更改nginx配置文件[root@localhost nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.conf//在18行下插入以下内容include ??vhost/\*.conf; ?????????//添加include方便nginx识别模板生成的配置文件//此时还没有这个文件,需要去创建[root@localhost nginx-1.12.0]# cd /usr/local/nginx/conf/[root@localhost conf]# mkdir vhost ??//创建虚拟机目录//启用template模板(启用后会进入监控模式)[root@localhost ~]# consul-template -consul-addr 192.168.142.66:8500 \-template "/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/kgc.conf:/usr/local/nginx/sbin/nginx -s reload" \--log-level=info“-consul-addr” ????#指定consul端地址
“-template” ???????#后方从左到右分别为:模板文件路径、生成的配置文件名称、重载nginx
“--log-level” ??????#写入日志的等级
因为template是在consul集群的基础上进行搭建的,因此在启动template后就能直接识别slave中的nginx容器
后续进行新的nginx容器的添加时,直接run一个新的容器后便会自动添加进配置文件中
看完上述内容,你们掌握Docker-compose和Docker-consul的配置部署了吗?
云专线_海外IDC http://www.vecloud.com/

使用高级回帖 (可批量传图、插入视频等)快速回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则   Ctrl + Enter 快速发布  

发帖时请遵守我国法律,网站会将有关你发帖内容、时间以及发帖IP地址等记录保留,只要接到合法请求,即会将信息提供给有关政府机构。
快速回复 返回顶部 返回列表