一.Docker Compose

          Docker Compose 将所管理的容器分为三层,工程(project),服务(service)以及容器(contaienr)。Docker Compose 运行的目录下的所有文件(docker-compose.yml, extends 文件或环境变量文件等)组成一个工程,若无特殊指定工程名即为当前目录名。一个工程当中可包含多个服务,每个服务中定义了容器运行的镜像,参数,依赖。一个服务当中可包括多个容器实例,Docker Compose 并没有解决负载均衡的问题,因此需要借助其他工具实现服务发现及负载均衡。
          Docker Compose 是一个用来创建和运行多容器应用的工具。使用 Compose 首先需要编写
Compose 文件来描述多个容器服务以及之间的关联,然后通过命令根据配置启动所有的容器。
           Dockerfile 可以定义一个容器,而一个 Compose 的模板文件(YAML 格式)可以定义一个包含多个相互关联容器的应用。Compose 项目使用 python 编写,基于后面的实验中我们将学习的 Docker API 实现。


二.Docker Compose配置测试

配置环境redhat7.2

1.将docker-compose-linux-x86_64的文件放置到/bin下,并做软链接和加可执行权限,方便调用命令

docker compose的volumns用法 docker compose swarm_操作系统


2.测试导入haproxy和nginx镜像,做负载均衡


3.在tmp下编写compose配置文件

docker compose的volumns用法 docker compose swarm_运维_02

docker compose的volumns用法 docker compose swarm_python_03

docker compose的volumns用法 docker compose swarm_运维_04


4.创建后端服务

web1为httpd,web2和web3为nginx,分别创建默认访问目录

docker compose的volumns用法 docker compose swarm_docker_05

docker compose的volumns用法 docker compose swarm_python_06

docker compose的volumns用法 docker compose swarm_python_07

docker compose的volumns用法 docker compose swarm_操作系统_08


5.在web1 httpd服务里建立配置安装httpd服务和启动httpd服务文件

docker compose的volumns用法 docker compose swarm_操作系统_09

docker compose的volumns用法 docker compose swarm_python_10


6.在haproxy里建立haroxy.cfg负载均衡配置文件

docker compose的volumns用法 docker compose swarm_python_11

docker compose的volumns用法 docker compose swarm_运维_12


7.在该compose目录下执行 docker-compose up 命令,会整合输出所有容器的输出


docker-compose完成结构

docker compose的volumns用法 docker compose swarm_python_13



docker compose的volumns用法 docker compose swarm_docker_14

docker compose的volumns用法 docker compose swarm_Docker_15


8.配置完成,实现负载均衡

docker compose的volumns用法 docker compose swarm_Docker_16

docker compose的volumns用法 docker compose swarm_操作系统_17

docker compose的volumns用法 docker compose swarm_运维_18

docker compose的volumns用法 docker compose swarm_操作系统_19

docker compose的volumns用法 docker compose swarm_操作系统_20


9.健康检查,关闭web3,访问正常,重新启动web3,服务正常

docker compose的volumns用法 docker compose swarm_Docker_21

docker compose的volumns用法 docker compose swarm_Docker_22


docker compose的volumns用法 docker compose swarm_Docker_23

docker compose的volumns用法 docker compose swarm_python_24



三.Docker swarm的负载均衡高可用

       Swarm 是 Docker 公司在 2014 年 12 月初发布的一套较为简单的工具,用来管理 Docker 集
群,它将一群 Docker 宿主机变成一个单一的,虚拟的主机。Swarm 使用标准的 Docker API
接口作为其前端访问入口,换言之,各种形式的 Docker Client(docker client in go, docker_py,docker 等)均可以直接与 Swarm 通信。Swarm 几乎全部用 Go 语言来完成开发。Swarm deamon 只是一个调度器(Scheduler)加路由器(router),Swarm 自己不运行容器,它只是接受 docker 客户端发送过来的请求,调度适合的节点来运行容器,这意味着,即使Swarm 由于某些原因挂掉了,集群中的节点也会照常运行,当 Swarm 重新恢复运行之后,它会收集重建集群信息。


1.配置环境

redhat7.2,7.2自带swarm工具

server1 主

server2 从

server3 从


2.安装

server1,server2,server3安装docker并启动服务

docker compose的volumns用法 docker compose swarm_运维_25


3.创建集群

docker compose的volumns用法 docker compose swarm_Docker_26

将docker swarm join 到172.25.29.1:2377 进行复制,分别复制到server2和server3的shell里

docker compose的volumns用法 docker compose swarm_Docker_27


docker compose的volumns用法 docker compose swarm_操作系统_28


完成后在server1上查看节点状态,集群配置完成

docker compose的volumns用法 docker compose swarm_python_29


4.Docker swarm 负载均衡高可用实验

server1,server2,server3导入nginx镜像

docker compose的volumns用法 docker compose swarm_运维_30

docker compose的volumns用法 docker compose swarm_运维_31

docker compose的volumns用法 docker compose swarm_python_32



5.导入flask框架镜像,server1,server2,server3都要导

docker compose的volumns用法 docker compose swarm_Docker_33


由于实现负载均衡,需要在nginx的网页上显示主机名,以区分不同后端的负载均衡

用python写的一个显示主机名的语句,导入flask和os

docker compose的volumns用法 docker compose swarm_运维_34



6.server1单机运行读取python文件,看是否能查看到主机名

打开flask镜像,将demo.py脚本放到root下

docker compose的volumns用法 docker compose swarm_Docker_35


提交保存

docker compose的volumns用法 docker compose swarm_python_36


测试写的显示主机名的python脚本是否正常

docker compose的volumns用法 docker compose swarm_python_37


可以显示容器名,测试正常,可以封装提交

docker compose的volumns用法 docker compose swarm_Docker_38

7.将测试好的加入demo.py脚本的镜像python:demo镜像导出为demo.tar

关闭容器并导出

docker compose的volumns用法 docker compose swarm_python_39


8.server2和server3分别导入flask和demo镜像

docker compose的volumns用法 docker compose swarm_运维_40

docker compose的volumns用法 docker compose swarm_docker_41



9.创建名为flask集群,并启动3个后端服务节点,读取python下的demo.py脚本

docker compose的volumns用法 docker compose swarm_运维_42



10.启动后浏览器测试

docker compose的volumns用法 docker compose swarm_Docker_43

docker compose的volumns用法 docker compose swarm_docker_44

3台后端服务轮询

docker compose的volumns用法 docker compose swarm_Docker_45


11.将后端服务变为8个节点

docker compose的volumns用法 docker compose swarm_运维_46


显示轮询

docker compose的volumns用法 docker compose swarm_运维_47



四.Docker swarm可视化web监控界面

1.导入visualizer镜像

docker compose的volumns用法 docker compose swarm_Docker_48


2.创建

docker compose的volumns用法 docker compose swarm_运维_49

查看容器

docker compose的volumns用法 docker compose swarm_python_50


3.浏览器输入地址,查看监控界面

docker compose的volumns用法 docker compose swarm_Docker_51



4.定时更新

docker compose的volumns用法 docker compose swarm_docker_52

update-parallelism 2     每次更新2个

update-delay 10s          每十秒更新1次

nginx                         每次更新nginx镜像

更新 名为flask的集群


图形变化image:nginx

docker compose的volumns用法 docker compose swarm_Docker_53




转载于:https://blog.51cto.com/anfishr/1977919