Contents

docker-compose 可以把多个容器组合编排成一个服务,例如一个web服务由一个前端nginx+两个后端tomcat组成,compose可以把这种结构利用yaml配置组织起来。
通过compose命令,可以快捷的管理这个服务中的所有容器

安装过程非常简单,只需要运行命令

1
sudo curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

赋予执行权限

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

安装成功

1
2
$ docker-compose --version
docker-compose version 1.16.1, build 1719ceb

直接看一个例子,把之前的spark集群用compose组织起来成为一个服务
先新建一个工程目录

1
mkdir -p compose-hadoop-spark/hadoop

docker-compose.yml 配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
version: '3.3'
services:
hadoop-slave1:
image: spark:0.5
container_name: hadoop-slave1
hostname: hadoop-slave1
volumes:
- /data/hadoop/slave1/tmp:/usr/local/hadoop/tmp
command: ["sh","-c","sudo service ssh start; tail -f /var/log/lastlog"]
hadoop-slave2:
image: spark:0.5
container_name: hadoop-slave2
hostname: hadoop-slave2
volumes:
- /data/hadoop/slave2/tmp:/usr/local/hadoop/tmp
command: ["sh","-c","sudo service ssh start; tail -f /var/log/lastlog"]
hadoop-master:
image: spark:0.5
container_name: hadoop-master
hostname: hadoop-master
volumes:
- /data/hadoop/master/tmp:/usr/local/hadoop/tmp
ports:
- 50070:50070
- 8020:8020
- 8080:8080
command: ["sh","-c","/home/hadoop/start-service.sh; tail -f /var/log/lastlog"]
networks:
default:
external:
name: net1

services下面定义容器,两个slave节点,一个master节点。networks下面是之前创建的net环境,compose的命令和docker大致上相似。
使用docker-compose命令启动这个服务

1
docker-compose up -d

使用compose在单机docker环境上编排一系列容器是比较简单高效的。

Contents