最近搞 devops 相关的内容,将机房的机器集中起来,方便服务部署,算力集中管理等。在 k8s 等都基本搭建完毕之后,闲暇时间学习下 docker-compose 工作原理。

环境准备

下载 compose 源码, 当前最新版本是 1.23.0

$ git clone https://github.com/docker/compose

然后通过 pycharm 导入到项目

架构图

img_7c96827d3fcce6004d7b3002ad66358e.jpe
docker-compose 架构图.jpg

在 docker-compose 中使用 docker api 的方式来驱动 dockerd, 如上图所示,所有内容均在 Container 中对 docker 常见操作进行封装。然后在 Project / Service 对象中进行调用

执行流程

  1. 执行 docker-compose 命令时,进入到程序主入口 main() 函数
  2. 在 main() 函数中调用 dispatch() 函数进行将命令转换为 可执行的对象

a. 构建 DocoptDispatcher 对象, 并解析相关参数置功能基础信息内容
b. 创建 Project 对象,并链接相应的 docker client api
c. 创建 TopLevelCommand 对象,并解析相关的参数配置

  1. 执行指令内容
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐