共计 5835 个字符,预计需要花费 15 分钟才能阅读完成。
这篇文章将为大家详细讲解有关 Docker 原生编排工具怎么用,丸趣 TV 小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
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-ce
yum install -y docker-ce
#关闭防火墙及增强型安全功能
systemctl stop firewalld.service
setenforce 0
#启动 Docker 并设置为开机自启动
systemctl start docker.service
systemctl enable docker.service
#网络优化
echo net.ipv4.ip_forward=1 /etc/sysctl.conf
sysctl -p
service network restart
systemctl restart docker
2、部署 docker-compose
# 下载安装 compose
curl -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 相同,但端口不能低于 60volumes 挂载宿主机路径或命令卷 restart 重启策略,默认 no,always, no-failure,unless-stopedhostname 容器主机名
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、3
version: 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:
- test
networks:
test:
#需要建立新镜像的服务需要放在 compose 工作站点中
[root@localhost docker_compose]# ls
docker-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-templatecentos7-2slave1192.168.142.77Docker-ce、registratorcentos7-minslave2192.168.142.136Docker-ce、registratordocker-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]# ls
consul 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 members
Node Address Status Type Build Protocol DC
consul-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 原生编排工具怎么用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。