Compose简介
Compose项目是Docker官方的开源项目,负责实现对Docker容器集群的快速编排。其代码目前在https://github.com/docker/compose 上开源。
Compose定位是定义和运行多个Docker容器的应用,其前身是开源项目Fig。
通过前面内容的介绍,我们知道使用一个Dockerfile模板文件,可以让用户很方便的定义一个单独的应用容器。然而,在日常工作中,经常会碰到需要多个容器相互配合来完成某任务的情况。例如要实现一个Web项目,除了Web服务容器本身,往往还需要加上后端的数据库服务容器,甚至还包括负载均衡容器等。
Compose恰好满足了这样的需求。它允许用户通过一个单独的docker-compose.yml模板文件来定义一组相关联的应用容器为一个项目(project)。
Compose中有两个重要的概念:
- 服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
- 项目(project):由一组关联的应用容器组成的一个完整业务单元。
Compose的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。
Compose项目由Python编写,实现上调用了Docker服务提供的API来对容器进行管理。
安装和卸载
Compose支持Linux、macOS、Windows10三大平台。
Compose可以通过Python的包管理工具pip进行安装,也可以直接下载编译好的二进制文件使用,甚至能够直接在Docker容器中运行。
Docker for Mac、Docker for Windows自带docker-compose二进制文件,安装Docker之后可以直接使用。
docker-compose --version
Linux系统需要单独使用二进制或者pip方式进行安装。
Linux安装docker-compose
二进制包
在Linux上的安装十分简单,从官方GitHub Release处直接下载编译好的二进制文件即可。例如,在Linux64位系统上直接下载对应的二进制包。
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose #赋予可执行权限
PIP安装
如果您计算机的架构是ARM(例如,树莓派),建议使用pip安装。
sudo pip install -U docker-compose
使用
场景:最常见的项目是web网站,一般的web网站都会依赖第三方提供的服务(比如:DB和cache),我们拿dubbo-admin进行讲解(dubbo-admin依赖zookeeper)。
Compose构建dubbo-admin服务
从github上获取dubbo-admin的master分支源码
git clone -b master https://github.com/apache/incubator-dubbo-ops.git
修改admin中的application配置,把zookeeper地址改为zookeeper://zookeeper:2181
使用maven进行编译打包
mvn clean package -Dmaven.test.skip=true
在dubbo-admin目录下编写Dockerfile文件,内容为
# FROM,表示使用JDK8环境为基础镜像,如果镜像不是本地会从DockerHub进行下载 FROM openjdk:8-jdk-alpine # 作者 MAINTAINER Simon<xueyao.me@gmail.com> VOLUME /tmp # ADD,拷贝文件并且重命名 ADD ./target/dubbo-admin-0.0.1-SNAPSHOT.jar app.jar # ENTRYPOINT,为了缩短Tomcat启动时间,添加java.security.egd的系统属性指向/dev/urandom作为ENTRYPOINT ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]