docker----compose

前言:在部署docker-compose的前提是你的环境得有docker这个环境
下载docker-compose的地址

curl -L "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

一、docker-compose简介

  • docker compose 的前身是Fig,它是一个定义及运行多个docker容器的工具
  • 使用docker compose不需要再使用shell脚本来启动容器
  • docker compose非常适合组合使用多个容器进行开发的场景

二、docker-compose文件结构

1、docker-compose.yml

2、yaml

2-1yaml语言的设计目标,就是方便人类读写,它实质上是种通用化的数据串行化格式
基本语法如下

  • 不支持制表符tab键缩进,使用空格缩进
  • 通常开头缩进2个空格
  • 字符后缩进1个空格,如冒号、逗号、横杠
  • 如果包含特殊字符用单引号引起来
  • #表示注释
  • 布尔值必须用引号括起来
    2-2 支持的数据结构有三种
  • 对象:键值对的集合,又称为映射/哈希/字典
  • 数组:一组按次序排列的值,又称为序列/列表
  • 纯量:单个的、不可再分的值

3、docker compose配置常用字段

在这里插入图片描述

4、docker compose常用命令

在这里插入图片描述

5、compose 命令说明

  • 基本的使用格式

docker-compose [options] [COMMAND] [ARGS…]

  • docker-compose选项
    • –verbose 输出更多调试信息
    • –version打印版本并退出
    • -f,–file FILE使用特定的compose模板文件,默认为docker-compose.yml
    • -p,–project-name NAME指定项目名称,默认使用目录名称

三、使用docker-compose构建nginx镜像

cd /opt
mkdir docker-compose-nginx
mv nginx ./docker-compose-nginx

在这里插入图片描述
在这里插入图片描述

vim docker-compose.yml
version: '3'
services:
  nginx:
     hostname: nginx
     build:
       context: ./nginx
       dockerfile: Dockerfile
     ports:
       - 1111:80
       - 2222:443
     networks:
       - cluster
     volumes:
       - ./wwwroot:/usr/local/nginx/html
networks:
  cluster:


在这里插入图片描述

mkdir wwwroot
vim /wwwroot/index.html
<h1>this is test web</h1>

docker-compose -f docker-compose.yum up -d

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、Consul

1、简介

Consul是一个服务发现和注册的工具,其具有分布式,高扩展性能特点
在这里插入图片描述

2、Consul主要特点

  • 支持健康检查,允许存储键值对
  • 基于Golong语言,可移植性强
  • 支持ACL访问控制
    与docker等轻量级容器可无缝配合

3、docker consul 容器服务更新与发现

在这里插入图片描述
思路:

  • 建立consul服务
    • 每个提供服务的节点上都要部署和允许consul的agent
    • consul agent有两个运行模式
      • server
      • client
    • server和client只是consul群集层面的区分,与搭建在cluster之上的应用服务无关

4、部署

实验环境:

  • 第一台centos7 IP地址:192.168.241.3
    • 需求软件包:Docker-ce、Docker-Compose 、Consul、Consul-template、nginx-1.12.0.tar.gz
  • 第二台centos7 IP地址:192.168.241.20
    • 需求软件包:Docker-ce 、registrator
      1、安装consul软件包(包已经在宿主机里下好了,直接共享过来使用)——consul服务器
mkdir /root/consul
mv consul_0.9.2_linux_amd64.zip /root/consul
cd /root/consul
unzip consul_0.9.2_linux_amd64.zip
mv consul /usr/bin
consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consul-data \
-bind=192.168.241.3 \				#consul服务器地址
-client=0.0.0.0 \
-node=consul-server01 &> /var/log/consul.log &

在这里插入图片描述
在这里插入图片描述

2、查看集群信息

consul members
consul info | grep leader

在这里插入图片描述

3、通过http api 可以获取到群集信息

curl 127.0.0.1:8500/v1/status/peers				##查看群集server成员
curl 127.0.0.1:8500/v1/status/leaders			#群集中 Raf leader
curl 127.0.0.1:8500/v1/catalog/services			#注册的所有服务
curl 127.0.0.1:8500/v1/catalog/nodes 			#群集节点详细信息
curl 127.0.0.1:8500/v1/catalog/nginx 			#查看nginx 服务信息

4、容器服务自动加入群集
1)安装Gliderlabs/Registrator
Gliderlabs/Registrator可检查容器运行状态自动注册,还可注销docker容器的服务,到服务的配置文件中
目前支持consul 、 etcd和skyDNS2
在192.168.241.20节点执行以下操作

docker run -d \
--name=registrator \
--net=host \
-v /var/run/docker.sock:/tmp/docker.sock \
--restart=always \
gliderlabs/registrator:latest \
-ip=192.168.241.20 \
consul://192.168.241.3:8500

在这里插入图片描述

2)测试服务发现功能是否正常

docker run -itd -p:83:80 --name test-01 -h test01 nginx
docker run -itd -p:84:80 --name test-02 -h test02 nginx
docker run -itd -p:99:80 --name test-03 -h test03 httpd
docker run -itd -p:88:80 --name test-04 -h test04 httpd

在这里插入图片描述

3)验证http和nginx服务是否注册到consul
浏览器输入http://192.168.241.3:8500,点击NODES,然后点击“consurl-server01”会出现5个服务
在consul服务器上查看

curl 127.0.0.1:8500/v1/catalog/services
在这里插入图片描述

在这里插入图片描述
5、安装consul-template
consul-template是一个守护进程,用于实时查询consul群集信息,并更新文件系统上任意数量的指定模板,生成配置文件,更新完成后可以选择运行shell命名执行更新操作,重新加载nginx。consul-template可以查询consul中的服务目录、key、key-values等
这种强大的抽象功能和查询语句模板可以使consul-template特别适合动态的创建配置文件

6、准备consul-template、nginx模板文件——在consul服务器上操作

vim /root/consul/nginx.ctmpl
upstream http_backend {
    {{range service "nginx"}}
     server {{.Address}}:{{.Port}};	
     {{end}}
}

server {
       listen 888;
       server_name localhost 192.168.241.3;
       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;
                 }
       }

在这里插入图片描述

7、编译安装&配置nginx

yum install gcc gcc-c++ pcre-devel zlib-devel -y
cd /root/consul
上传nginx压缩包
tar zxvf nginx-1.12.0.tar.gz -C /opt
cd /opt/nginx-1.12.0
./configure --prefix=/usr/local/nginx
make && make install

8、修改nginx配置文件

cd /usr/local/nginx/conf
vim nginx.conf
#http模块下添加
http {
    include       mime.types;
    include       vhost/*.conf;				#添加  并vhost目录需手动创建
mkdir vhost
mkdir /var/log/nginx

在这里插入图片描述

9、配置、启动Template

cd /root/consul 
#上传consul-template_0.19.3_linux_amd64.zip
unzip consul-template_0.19.3_linux_amd64.zip 
mv consul-template /usr/bin

/usr/local/nginx/sbin/nginx 

consul-template -consul-addr 192.168.241.3:8500 -template "/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/test.conf:/usr/local/nginx/sbin/nginx -s reload" --log-level=info

10、测试
另起一个终端,进行之后的测试

cd /usr/local/nginx/conf/vhost/
cat test.conf

在这里插入图片描述

在后端服务器中再次添加一个容器,查看vhost中配置文件是否会自动发现/更新

docker run -itd -p:77:80 --name test-05 -h test05 nginx

查看nginx容器日志,请求轮询到各个容器节点上

docker logs -f test-01
docker logs -f test-02
docker logs -f test-03

在这里插入图片描述
在这里插入图片描述

11、consul多节点部署
添加一台已有docker环境的服务器192.168.241.4/24加入已有群集
这里需要准备Docker-Compose、consul_0.9.2_linux_amd64.zip

consul agent \
-server \
-bootstrap \
-ui \
-data-dir=/var/lib/consu-data \
-bind=192.168.241.4 \
-client=0.0.0.0 \
-node=consul-server02 \
-enable-script-checks=true \
-datacenter=dc1 \
-join 192.168.241.3 &> /var/log/consu.log &

在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值