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中有两个重要的概念:
==服务(service):==一个应用的容器,实际上可以包含若干运行相同镜像的容器实例。(像负载均衡群)
==工程(project):==有一组关联的应用容器组成的一个完整的业务单元,在Docker-Compose.yml文件中定义。
一、安装docker-compose(1.18.0+)
官方文件:
https://docs.docker.com/compose/install/
[root@server1 harbor]# curl -L https://github.com/docker/compose/releases/download/1.24.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 617 100 617 0 0 407 0 0:00:01 0:00:01 --:--:-- 407
100 15.4M 100 15.4M 0 0 13533 0 0:19:53 0:19:53 --:--:-- 20181
[root@server1 harbor]# chmod +x /usr/local/bin/docker-compose
[root@server1 harbor]# ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
[root@server1 harbor]# docker-compose --version
docker-compose version 1.24.0, build 0aa59064
eval $(docker-machine -v) #释放之前连接的容器
二、docker-compose.yml书写(做一个负载均衡集群)
官网书写规范:
https://docs.docker.com/compose/env-file/
[root@server1 compose]# vim docker-compose.yml
[root@server1 compose]# mkdir web1
[root@server1 compose]# mkdir web2
[root@server1 compose]# mkdir haproxy
[root@server1 compose]# cd haproxy/
[root@server1 haproxy]# yum install -y haproxy
[root@server1 haproxy]# cp /etc/haproxy/haproxy.cfg . #更改自带的配置文件
[root@server1 haproxy]# vim haproxy.cfg #更改
[root@server1 compose]# docker-compose up #创建容器并运行
[root@server1 compose]# echo web1 > web1/index.html #添加发布页面
[root@server1 compose]# echo web2 > web2/index.html
[root@server1 compose]# docker-compose start #开启容器
Starting web1 ... done
Starting web2 ... done
Starting haproxy ... done
[root@server1 compose]# docker-compose ls #查看管理容器
2、设置公共挂载点webdata
[root@server1 compose]# docker-compose up -d #创建容器并运行打入后台
[root@server1 compose]# docker-compose logs #查看日志