千家信息网

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

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,本文以Docker-compose和Docker-consu为例,为大家分析Docker原生编排工具的安装配置方法,阅读完整文相信大家对原生编排工具的安装配置方法有了一定的认识。Docker原生编排工
千家信息网最后更新 2025年12月03日Docker-compose和Docker-consul的配置部署

本文以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 https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo#安装Docker-ceyum 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 docker
2、部署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_compose
3、compose练习实例

Docker Compose配置常用字段

字段描述
build dockerfile context指定Dockerfile文件名构建镜像上下文路径
image指定镜像
command执行命令,覆盖默认命令
container name指定容器名称,由于容器名称是唯一的
deploy指定部署和运行服务相关配置,只能在Swarm模式使用
environment添加环境变量
networks加入网络
ports暴露容器端口,与-p相同,但端口不能低于60
volumes挂载宿主机路径或命令卷
restart重启策略,默认no,always, no-failure,unless-stoped
hostname容器主机名

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-template
centos7-2slave1192.168.142.77Docker-ce、registrator
centos7-minslave2192.168.142.136Docker-ce、registrator

docker-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的配置部署了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读!

容器 服务 配置 文件 集群 信息 名称 命令 地址 模板 镜像 服务器 功能 工具 端口 节点 内容 字段 目录 网络 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发系统包含哪些 网络安全法律体系解释有几部 新乡市九晟网络技术有限公司 ureport2 支持数据库 银行网络安全课程设计 dnf手游出现正在准备服务器 db2备份恢复到不同数据库 网络安全学生含金量高的证书 12.2数据库的并发控制 ice服务器真的很贵吗 大商创 数据库 isbn数据库下载 软件软件开发外包企业 网络安全公司黑客 网络安全学习需要什么基础 重装系统验证服务器身份怎么解决 宇视服务器崩溃怎么维修 网络安全处置发展现状 白云软件开发专业哪家强 腾讯云mysql服务器登陆 造梦西游外传服务器有哪些 能够搭建服务器的代码是什么 唐山网络安全教育学校 查询软件开发部的员工姓名年龄 桥西区品牌软件开发专业服务 bat脚本删除数据库数据 中国电信网络技术研究所 上海科旭网络技术有... erp管理系统软件开发 贵州网络安全和信息化协会
0