一、Compose简介
- Compose是docker官方开源项目之一。负责实现快速编排docker容器集群,其定位是 定义和运行多个docker容器的应用。
- 稍微有docker基础的小伙伴们,应该都知道借助Dockerfile模板文件可以非常方便地定义一个单独的docker应用容器。但是,日常工作中,我们经常需要多个容器相互配合来完成某项任务。(例如:要实现一个Web项目,除了Web服务容器本身,往往还需要再加上数据库服务容器,大型互联网架构还会考虑很多的中间件服务容器)不巧,Compose恰好就能很好地帮助我们完成这项工作!
- 使用Compose有2个非常重要的概念需要注意:
- 服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
- 项目(project):一组关联的应用容器组成的一个完整业务单元。
- Compose工作原理:Compose默认的管理对象是项目(project),通过子命令对项目中的一组容器进行便捷的生命周期管理;内部实际上调用了Docker服务提供的API 来管理容器。
二、安装docker-compose
2.1 安装和卸载
Compose支持 Linux/macOS/Windows 三大平台。
- Compose可以通过pip工具进行安装
- Compose可以通过下载编译好的二进制文件进行使用
- Compose还可以直接运行在Docker容器中
2.2 Linux机器上安装docker-compose
Linux系统安装docker-compose的2种方式:
- 下载编译好的二进制文件
- 使用Python的包管理工具pip进行安装
2.2.1 二进制包方式安装docker-compose
从官方 GitHub Release 处直接下载编译好的二进制文件即可。
例如,在 Linux 64 位系统上直接下载对应的二进制包。
sudo curl -L https://github.com/docker/compose/releases/download/1.17.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose #赋予可执行权限
三、使用compose构建dubbo-admin服务
3.1 获取 dubbo-admin 源码
- 从 github 获取 dubbo-admin 的 master 分支源码
git clone -b master https://github.com/apache/incubator-dubbo-ops.git
- 修改 dubbo-admin 中的 application 配置文件,将 zookeeper 地址改为 zookeeper://zookeeper:2181
- 使用 maven 进行编译打包
mvn clean package -Dmaven.test.skip=true
3.2 编写Dockerfile 文件
- 在 dubbo-admin 目录下编写 Dockerfile 文件,其内容如下:
# FROM,表示使用JDK8环境为基础镜像,如果镜像不是本地的会从DockerHub进行下载
FROM openjdk:8-jdk-alpine
# 作者
MAINTAINER study.163.com<blake@163.com>
VOLUME /tmp
# ADD,拷贝文件并且重命名
ADD ./target/dubbo-admin-0.0.1-SNAPSHOT.jar app.jar
# ENTRYPOINT,为了缩短Tomcat的启动时间,添加java.security.egd的系统属性执行/dev/urandoom 作为ENTRYPOINT
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
- 在 Dockerfile 文件所在路径下,执行 docker build -t dubbo-admin:1.0 . 进行docker容器的构建。
3.3 编写 docker-compose.yml 文件
- 在 dubbo-admin 目录下编写 docker-compose.yml 文件,其内容模板如下:
version: '3.4'
services:
zk_server:
image: zookeeper:3.4
ports:
- 2181:2181
dubbo-admin:
image: dubbo-admin:1.0
links:
- zk_server:zookeeper
ports:
- 7001:7001
3.4 运行 compose 项目
- 在 dokcer-compose.yml 文件所在路径下执行 docker-compose up
看到上图所示,表明 dubbo-admin 服务已成功启动!
- 在浏览器地址栏访问 http://服务器ip:7001 进行验证。登入用户密码为:
root/root
guest/guest
dubbo-admin 界面如下:
四、小结
- 运行docker-compose 有一个必要条件:docker服务必须处于正常工作状态。
- docker-compose 的使用属于docker的进阶实践,故要求具备一定的docker基础知识。