docker-compose 源码分析

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

最近搞 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. 执行指令内容
目录
相关文章
|
4天前
|
消息中间件 Kafka Docker
docker compose 安装 kafka
通过本文的步骤,您可以快速在本地使用 Docker Compose 安装并配置 Kafka 和 Zookeeper。Docker Compose 简化了多容器应用的管理,方便快速搭建和测试分布式系统。
35 2
|
12天前
|
关系型数据库 MySQL 数据库
Docker Compose V2 安装常用数据库MySQL+Mongo
以上内容涵盖了使用 Docker Compose 安装和管理 MySQL 和 MongoDB 的详细步骤,希望对您有所帮助。
91 42
|
1月前
|
存储 Docker 容器
Docker-基础(数据卷、自定义镜像、Compose)
通过数据卷实现持久化存储,通过自定义镜像满足特定需求,通过Docker Compose方便地管理多容器应用
87 27
|
1月前
|
存储 Docker 容器
Docker-基础(数据卷、自定义镜像、Compose)
通过数据卷实现持久化存储,通过自定义镜像满足特定需求,通过Docker Compose方便地管理多容器应用。掌握这些Docker基础概念和操作,可以显著提高开发和部署效率,确保应用程序的可移植性和可扩展性。
74 22
|
2月前
|
存储 Kubernetes Docker
Kubernetes(k8s)和Docker Compose本质区别
理解它们的区别和各自的优势,有助于选择合适的工具来满足特定的项目需求。
232 19
|
2月前
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
150 24
|
2月前
|
关系型数据库 MySQL Docker
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
《docker高级篇(大厂进阶):5.Docker-compose容器编排》包括是什么能干嘛去哪下、Compose核心概念、Compose使用三个步骤、Compose常用命令、Compose编排微服务
202 6
|
2月前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
300 78
|
3月前
|
NoSQL Redis Docker
【赵渝强老师】使用Docker Compose管理容器
Docker Compose 通过 YAML 文件管理多个容器,简化复杂系统的部署和管理。本文介绍了 Docker Compose 的基本概念,并通过一个包含 Redis DB 和 Python Web 模块的示例,展示了如何使用 Docker Compose 部署和管理多容器应用。手动部署和 Docker Compose 部署的对比突显了 Docker Compose 在系统复杂度增加时的优势。
|
3月前
|
运维 开发者 Docker
Docker Compose:简化容器化应用的部署与管理
Docker Compose:简化容器化应用的部署与管理