Docker容器中Compose编排、consul集群、te如何实现
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章给大家分享的是有关Docker容器中Compose编排、consul集群、te如何实现的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。docker compose容器
千家信息网最后更新 2025年12月02日Docker容器中Compose编排、consul集群、te如何实现
这篇文章给大家分享的是有关Docker容器中Compose编排、consul集群、te如何实现的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。
docker compose容器编排
(1)docker compose的前身Fig,它是一个定义及运行多个docker容器的工具
(2)使用docker compose不再需要使用shell脚本启动容器
(3)docker compose非常适合组合使用多个容器进行开发的场景
YAML是一种标记语言很直观的数据序列化格式
文件格式及编写注意事项:
不支持制表符tab键缩进,需要使用空格缩进
通常开头缩进2个空格
字符后缩进1个空格,如冒号,逗号,横杆
用井号注释
如果包含特殊字符用单引号引起来
布尔值必须用引号括起来
docker compose配置常用字段
| 字段 | 描述 |
|---|---|
| build dockerfile context | 指定Dockerfile文件名构建镜像上下文路径 |
| image | 指定镜像 |
| command | 执行命令,覆盖默认命令 |
| container name | 指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale |
| 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 | 停止/启动/重启服务 |
compose命令说明
基本的使用格式
docker-compose [options] [COMMAND] [ARGS...]
docker-compose选项
--verbose 输出更多调试信息--version 打印版本并退出-f,--file FILE使用特定的compose模板文件,默认为docker-compose.yml-p,--project-name NAME指定项目名称,默认使用目录名称
1、安装docker容器和compose编排工具
[root@localhost ~]# yum install -y \> yum-utils \ ##设置源工具> device-mapper-persistent-data \ ##映射工具> lvm2 ##映射工具[root@localhost ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo##加载阿里云镜像源[root@localhost ~]# yum install docker-ce -y ##安装docker容器[root@localhost ~]# systemctl stop firewalld.service ##关闭防火墙[root@localhost ~]# setenforce 0[root@localhost ~]# systemctl start docker ##开启docker容器[root@localhost ~]# systemctl enable docker ##开机自启动[root@localhost ~]# ps aux | grep docker ##查看docker进程是否开启[root@localhost ~]# tee /etc/docker/daemon.json <<-'EOF' ##进行镜像加速> {> "registry-mirrors": ["https://3a8s9zx5.mirror.aliyuncs.com"]> }> EOF{ "registry-mirrors": ["https://3a8s9zx5.mirror.aliyuncs.com"]}[root@localhost ~]# systemctl daemon-reload ##重载守护进程[root@localhost ~]# systemctl restart docker ##重启docker服务[root@localhost ~]# mount.cifs //192.168.100.100/LNMP-C7 /mnt/Password for root@//192.168.100.100/LNMP-C7: [root@localhost ~]# cd /mnt/docker/[root@localhost docker]# cp -p docker-compose /usr/bin/ ##将docker-compose 复制到 /usr/bin/ 目录下[root@localhost docker]# docker-compose -v ##查看版本信息docker-compose version 1.21.1, build 5a3f1a32、创建Nginx编排实例
[root@localhost docker]# cd ~[root@localhost ~]# mkdir compose-nginx ##创建工作目录[root@localhost ~]# cd compose-nginx/[root@localhost compose-nginx]# mkdir nginx ##创建Nginx的目录[root@localhost compose-nginx]# cd nginx/[root@localhost nginx]# vim run.sh ##编辑启动脚本#!/bin/bash/usr/local/nginx/sbin/nginx ##启动Nginx服务[root@localhost nginx]# mkdir /abc[root@localhost nginx]# mount.cifs //192.168.100.3/LNMP-C7 /abc/Password for root@//192.168.100.3/LNMP-C7: [root@localhost nginx]# cp /abc/nginx-1.12.2.tar.gz ./ ##将Nginx的压缩包复制到当前目录下[root@localhost nginx]# vim Dockerfile ##编写容器文件FROM centos:7RUN yum -y updateRUN yum -y install pcre-devel zlib-devel gcc gcc-c++ makeRUN useradd -M -s /sbin/nologin nginxADD nginx-1.12.2.tar.gz /usr/local/srcWORKDIR /usr/local/srcWORKDIR nginx-1.12.2RUN ./configure \--prefix=/usr/local/nginx \--user=nginx \--group=nginx \--with-http_stub_status_module && make && make installENV PATH /usr/local/nginx/sbin:$PATHEXPOSE 80EXPOSE 443RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.confADD run.sh /run.shRUN chmod 755 /run.shCMD ["/run.sh"][root@localhost nginx]# cd ../[root@localhost compose-nginx]# vim docker-compose.yml ##创建compose模板脚本version: '3' ##版本services: ##服务 nginx: hostname: nginx ##容器主机名 build: context: ./nginx ##创建容器的文件路径 dockerfile: Dockerfile ports: - 1216:80 ##映射端口 - 1217:443 networks: - abc ##网络名称 volumes: - ./wwwroot:/usr/local/nginx/html ##数据卷关联宿主站点目录networks: ##对外申明网络 abc:[root@localhost compose-nginx]# docker-compose -f docker-compose.yml up -d##执行compose脚本开启,-d守护进程[root@localhost compose-nginx]# cd wwwroot/[root@localhost wwwroot]# vim index.htmlthis is test!!! ##编辑首页内容[root@localhost wwwroot]# yum install tree -y[root@localhost wwwroot]# tree ~ ##查看整个所需的内容结构/root├── anaconda-ks.cfg├── compose-nginx│ ├── docker-compose.yml ##编排模板│ ├── nginx│ │ ├── Dockerfile ##容器脚本│ │ ├── nginx-1.12.2.tar.gz ##安装包│ │ └── run.sh ##启动服务脚本│ └── wwwroot│ └── index.html ##网站首页
3、用浏览器查看网页
consul概述
consul是开源工具,用于实现分布式系统的服务发现与配置
consul的特性:
(1)consul支持健康检查,允许存储键值对(2)一致性协议采用Raft算法,用来保证服务的高可用(3)成员管理和消息广播采用GOSSIP协议,支持ACL访问控制
方便部署,与docker等轻量级容器可无缝配合
建立consul服务
每个提供服务的节点上都要部署和运行consul和agent
consul agent有两种运行模式:server,client
server和client知识consul集群层面的区分,与搭建在cluster之上的应用服务无关
架构拓扑图
实验环境
consul服务端 192.168.13.128 Docker-ce 、Compose 3、Consul、Consul-templateclient客户节点 192.168.13.129 Docker-ce 、registrator
1、配置consul服务器
[root@consul ~]# mkdir consul[root@consul ~]# mount.cifs //192.168.100.3/LNMP-C7 /mnt/Password for root@//192.168.100.3/LNMP-C7: [root@consul ~]# cd /mnt/docker/ [root@consul docker]# cp consul_0.9.2_linux_amd64.zip /root/consul/[root@consul docker]# cd /root/consul/[root@consul consul]# unzip consul_0.9.2_linux_amd64.zip ##解压consulArchive: consul_0.9.2_linux_amd64.zip inflating: consul [root@consul consul]# mv consul /usr/bin/ ##便于系统识别[root@consul consul]# consul agent \ ##代理> -server \ ##提供server> -bootstrap \> -ui \ ##web访问界面> -data-dir=/var/lib/consul-data \ ##数据存储目录> -bind=192.168.13.128 \ ##本地地址> -client=0.0.0.0 \ ##所有节点> -node=consul-server01 &> /var/log/consul.log & ##指定本地节点名称[root@consul consul]# consul members ##查看群集信息Node Address Status Type Build Protocol DCconsul-server01 192.168.13.128:8301 alive server 0.9.2 2 dc1[root@consul consul]# consul info | grep leader ##查看leader leader = true leader_addr = 192.168.13.128:8300[root@consul consul]# systemctl stop firewalld.service ##关闭防火墙[root@consul consul]# setenforce 0##通过httpd api获取集群信息[root@localhost consul]# curl 127.0.0.1:8500/v1/status/peers ##查看群集server成员[root@localhost consul]# curl 127.0.0.1:8500/v1/status/leaders ##群集中 Raf leader[root@localhost consul]# curl 127.0.0.1:8500/v1/catalog/services ##注册的所有服务[root@localhost consul]# curl 127.0.0.1:8500/v1/catalog/nodes ##群集节点详细信息[root@localhost consul]# curl 127.0.0.1:8500/v1/catalog/nginx ##查看 nginx 服务信息
2、配置client节点服务器
[root@client ~]# docker run -d \> --name=registrator \ ##安装registrator自动注册功能 > --net=host \ ##指定网络> -v /var/run/docker.sock:/tmp/docker.sock \ ##指定数据卷> --restart=always \ > gliderlabs/registrator:latest \ ##镜像> -ip=192.168.13.129 \ ##本地地址> consul://192.168.13.128:8500 ##consul服务器地址
3、在节点服务器上测试发现功能是否正常
[root@client ~]# docker run -itd -p 83:80 --name test-01 -h test01 nginx[root@client ~]# docker run -itd -p 84:80 --name test-02 -h test02 nginx[root@client ~]# docker run -itd -p 88:80 --name test-03 -h test03 httpd[root@client ~]# docker run -itd -p 89:80 --name test-04 -h test04 httpd[root@client ~]# systemctl stop firewalld.service ##关闭防火墙[root@client ~]# setenforce 0
4、验证http和Nginx服务是否注册到consul
consul-template概述
是基于 Consul 的自动替换配置文件的应用;
可以查询 Consul 中的服务目录:Key、Key-values等;
特别适合动态的创建配置文件;
是一个守护进程,用于实时查询 consul 集群信息;
1、在consul服务器上配置模板文件
[root@consul consul]# vim /root/consul/nginx.ctmpl upstream http_backend { ##申明后端服务器池 {{range service "nginx"}} server {{.Address}}:{{.Port}}; {{end}}}server { listen 1216; ##代理端口 server_name localhost 192.168.13.128; ##本地地址 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; proxy_set_header Client-IP $remote_addr; proxy_set_header X-Fprwarded-For $proxy_add_x_forwarded_for; proxy_pass http://http_backend; ##跳转后端服务器池 }}2、在consul服务器上安装配置Nginx
[root@consul consul]# cd /mnt/[root@consul mnt]# tar zxvf nginx-1.12.2.tar.gz -C /opt/ ##解压Nginx[root@consul mnt]# cd /opt/nginx-1.12.2[root@consul nginx-1.12.2]# yum install gcc gcc-c++ pcre-devel zlib-devel -y ##安装组件[root@consul nginx-1.12.2]# ./configure --prefix=/usr/local/nginx ##配置[root@consul nginx-1.12.2]# make && make install[root@consul nginx-1.12.2]# vim /usr/local/nginx/conf/nginx.conf ##修改Nginx配置文件 17 http { 18 include mime.types; 19 include vhost/*.conf; ##指定虚拟主机目录 [root@consul nginx-1.12.2]# mkdir /usr/local/nginx/conf/vhost ##创建虚拟主机目录[root@consul nginx-1.12.2]# mkdir /var/log/nginx ##创建模板中日志文件目录[root@consul nginx-1.12.2]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ ##创建软连接[root@consul nginx-1.12.2]# nginx ##开启Nginx服务[root@consul nginx-1.12.2]# netstat -natp | grep nginx3、在consul服务器上配置并启动templeta
[root@consul nginx-1.12.2]# cd /mnt/docker/[root@consul docker]# cp consul-template_0.19.3_linux_amd64.zip /root/[root@consul docker]# cd /root/[root@consul ~]# unzip consul-template_0.19.3_linux_amd64.zip ##安装templetaArchive: consul-template_0.19.3_linux_amd64.zip inflating: consul-template [root@consul ~]# mv consul-template /usr/bin[root@consul ~]# consul-template -consul-addr 192.168.13.128:8500 \ ##指定consul本地地址> -template "/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/kgc.conf:/usr/local/nginx/sbin/nginx -s reload" \##指定template的路径> --log-level=info ##日志级别[root@consul ~]# cd /usr/local/nginx/conf/vhost/[root@consul vhost]# lskgc.conf ##自动生成配置文件模板upstream http_backend { server 192.168.13.129:83; ##自动生成后端容器服务地址及端口号 server 192.168.13.129:84;}server { listen 1216; server_name localhost 192.168.13.128; 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; proxy_set_header Client-IP $remote_addr; proxy_set_header X-Fprwarded-For $proxy_add_x_forwarded_for; proxy_pass http://http_backend; }}用浏览器查看
也可在后端节点服务器上通过docker logs -f test-01查看来访地址为128
4、在client端创建一个 nginx 容器节点,检测服务发现及配置更新,不要关闭防火墙
[root@localhost ~]# docker run -itd -p:85:80 --name test-05 -h test05 nginx##继续浏览器访问128服务端[root@client ~]# docker logs -f test-05192.168.13.128 - - [09/Jan/2020:11:05:39 +0000]##轮询访问,还是128服务端访问的节点,实现了负载均衡
感谢各位的阅读!关于"Docker容器中Compose编排、consul集群、te如何实现"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!
服务
容器
配置
文件
目录
服务器
节点
信息
名称
地址
命令
工具
模板
脚本
集群
数据
网络
进程
镜像
主机
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
java常用数据库连接
网络安全攻防演练会议总结
网络安全和软件工程专业
网络技术及应用清华大学出版
服务器防火墙的配置与管理
软件开发技术职称怎么填
网络安全法敏感级信息
大专生适合搞软件开发吗
网络安全影响因素
北京软件开发的国企
数据库中间件作用
三国志战略版2120服务器
网络安全快板说唱
数据库安全技术交底
服务器最多支持多少个cpu
网络技术人员工作简历
中办网络安全工作责任制
众至邮件服务器
山东恒邦网络技术一卡通
数据库专用血样袋
网络安全现状研究报告
ds-510打印服务器
学校网络安全的维护与管理
服务器能装成电脑
佳聘网络技术
服务器人口普查每几年举行一次
通信网络技术题库
华三smtp服务器设置
为什么魔兽世界服务器容量小
读取access数据库信息