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命令启动这个服务
使用compose在单机docker环境上编排一系列容器是比较简单高效的。