Docker容器配置Compose和consul
发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,这篇文章主要为大家分享Docker容器配置Compose和consul的方法。文中还介绍了Docker-Compose的常用字段和命令以及consul-template的概述和实现,希望大家通过这篇文
千家信息网最后更新 2025年02月05日Docker容器配置Compose和consul
这篇文章主要为大家分享Docker容器配置Compose和consul的方法。文中还介绍了Docker-Compose的常用字段和命令以及consul-template的概述和实现,希望大家通过这篇文章能有所收获。
docker compose配置常用字段
docker compose常用命令
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.3/LNMP-C7 /mnt/Password for root@//192.168.100.3/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,用浏览器查看网页
docker consul容器服务更新与发现拓扑图
consul概述
consul是开源工具,用于实现分布式系统的服务发现与配置consul的特性:(1)consul支持健康检查,允许存储键值对(2)一致性协议采用Raft算法,用来保证服务的高可用(3)成员管理和消息广播采用GOSSIP协议,支持ACL访问控制方便部署,与docker等轻量级容器可无缝配合
建立consul服务
每个提供服务的节点上都要部署和运行consul和agentconsul agent有两种运行模式:server,clientserver和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的内容,看完之后是否有所收获呢?如果想了解更多相关内容,欢迎关注行业资讯!
服务
配置
容器
目录
服务器
节点
文件
信息
地址
模板
工具
脚本
内容
名称
进程
防火墙
防火
主机
命令
常用
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
数据库系统发展的基础
文件在数据库打开怎么关闭
数据库表结构备份
网络安全简写英文
软件开发需要笔记本吗
供电网络安全攻防
宁河软件开发选哪家
破坏计算机信息系统罪网络安全法
机电工程系校园网络安全宣传
台州数据库培训哪里好
软件开发协议 跨境 英文
网络安全属于国家安全吗
建设网络安全对抗实验室
ie的代理服务器
创建一个数据库表
但愿人长久伴奏软件开发
铁路网络安全事件反思
沧州软件开发平台
数据库违规约束条件
荆州华诚网络技术有限公司
软件开发报价怎么收费
网络安全作文的题记
甘肃银联网络技术服务怎么样
软件开发遇到的难点
金融网络安全上市公司龙头股
网络安全专业是不是好就业
软件开发竞争性谈判文件
网络安全风险和威胁
数据库代理sql
服务器宕机有什么特征