Docker容器中Compose编排、consul集群、te如何实现
发表于:2025-01-26 作者:千家信息网编辑
千家信息网最后更新 2025年01月26日,这篇文章给大家分享的是有关Docker容器中Compose编排、consul集群、te如何实现的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。docker compose容器
千家信息网最后更新 2025年01月26日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 5a3f1a3
2、创建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 nginx
3、在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安全错误
数据库的锁怎样保障安全
同花顺服务器异常怎么办
汽车软件开发入门书籍
个人小服务器耗电量
癌转移数据库
网络安全技术职称考试
视频云服务器知乎
网络安全课程 最好
数据库jpg是什么
幻塔服务器选择互通吗
西电网络安全学院保研
如何查看数据库的路径
我的世界夜色朦胧服务器视频
梦幻服务器进程为什么那么吃内存
我的世界纯战争服务器
魔方互联网科技有限公司
软件工程中软件开发流程是什么
数据库访问失败导致锁用户
佛山数据链软件开发优化价格
成美互联网科技公司
文明礼仪网络安全手抄报图片
asp.net搭建服务器
数据库技术书电子版
网络安全专业能写代码吗
mysql数据库分组
网络安全宣传主题团会记录
云码付网络技术
英文全文型数据库
青岛星辉传媒网络技术有限公司
可以通过香港的服务器上网吗
云计算平台网络安全管理系统