少于 1 分钟阅读 次阅读

Docker Engine 是底层的“发动机”,负责运行和管理单个容器;而 Docker Compose 是上层的“指挥官”,负责协调和管理由多个容器组成的复杂应用。

1. Docker Engine(Docker 引擎)

Docker Engine 是 Docker 的核心组件,是一个客户端-服务器(C/S)架构的应用程序。当安装“Docker”时,核心指的就是它。

核心组成:

  • 服务器 (Docker Daemon/守护进程):名为 dockerd。它在后台运行,负责创建和管理 Docker 对象(如镜像、容器、网络和数据卷)。
  • REST API:一套允许程序与 Docker Daemon 进行交互的接口。
  • 命令行界面 (CLI):即我们平时在终端输入的 docker 命令。它通过 REST API 与后台的守护进程通信。

它的作用:

  • 构建镜像:将代码和环境打包。
  • 运行容器:基于镜像启动独立的运行环境。
  • 资源管理:控制容器对 CPU、内存、磁盘和网络的访问。

2. Docker Compose

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它并不取代 Docker Engine,而是通过调用 Docker Engine 的 API 来简化复杂的操作。

核心机制:

  • YAML 文件 (docker-compose.yml):在这个配置文件中定义所有的服务(Service)、网络和卷。
  • 单一命令控制:通过一个简单的 docker-compose up 命令,就可以根据配置同时启动并关联多个容器。

它的作用:

  • 服务编排:比如一个典型的 Web 应用需要“前端 + 后端 + 数据库”,可以用 Compose 规定它们的启动顺序和依赖关系。
  • 环境一致性:确保在开发、测试和生产环境中使用完全相同的多容器配置。

3. 两者的核心区别与联系

特性 Docker Engine (docker) Docker Compose (docker-compose)
侧重点 专注于单个容器的管理。 专注于整套应用(多个关联容器)的协作。
操作方式 主要是繁琐的命令行参数(如 docker run -p 80:80 ...)。 使用声明式的 YAML 配置文件
适用场景 快速测试镜像、运行简单的独立工具。 开发、部署微服务架构或包含数据库的多组件应用。
关系 基础。没有引擎,Compose 无法工作。 工具。基于引擎之上的高级封装。

留下评论