Docker是什么?
Docker 的定义
Docker 是一个完整的容器化平台,它包含多个工具和技术,用于开发、部署和运行容器化应用程序。Docker 提供了从开发到生产的一体化工作流,帮助开发者和运维团队构建和管理容器。
Docker 包括:
-
Docker Engine:用于构建和运行容器的核心引擎。
-
Docker CLI:与
Docker Daemon
交互的命令行工具。 -
Docker Compose:用于定义和管理多容器应用的工具。
-
Docker Hub:公共镜像仓库,用于存储和分发容器镜像。
-
Docker Desktop:开发者友好的
GUI
工具,包含Docker Engine
和其他工具。 -
Docker Swarm:
- Docker 的内置容器编排工具,用于管理和部署分布式集群。
- 提供高可用性、负载均衡和容器调度功能。
- 使用简单,直接通过
Docker CLI
管理Swarm
集群。
等等。
Docker Engine 的定义
Docker Engine
是 Docker 平台的核心组件,专注于容器的运行时管理。它具体包括以下部分:
- Docker Daemon (
dockerd
) :核心服务,负责实际的容器操作。 - Docker CLI (
docker
) :命令行工具,用于与Daemon
交互。 - REST API:允许通过编程方式与
Daemon
交互。 - Container Runtime:底层运行时,用于执行和隔离容器(如
containerd
)。
Docker 与 Docker Engine 的关系
-
Docker 是整个平台,Docker Engine 是其中的核心技术:
Docker Engine
提供容器的创建、管理、运行、网络、存储等核心功能。Docker
作为平台,整合了多个工具和生态系统(如Docker Compose
、Docker Swarm
、Docker Hub
)。
-
Docker CLI 是 Docker Engine 的一部分:
Docker CLI
是一个直接与Docker Engine
交互的工具,是开发者使用Docker
最常接触的部分。
-
品牌与技术的区别:
- Docker 是一个品牌,覆盖了从开发到生产的容器化工作流。
Docker Engine
是技术栈中的运行时,用于实际操作容器。
简单理解:Docker 是大框架,Docker Engine 是框架的核心技术,离开了 Docker Engine,Docker 就无法工作。
特性 | Docker 平台 | Docker Engine |
---|---|---|
定义 | 一个容器化平台,提供全栈工具。 | 核心组件,负责运行容器的引擎。 |
包含内容 | Docker Engine、Compose、Hub 等。 | Docker Daemon、CLI、REST API 等。 |
作用 | 开发到生产的一体化工作流。 | 容器创建、管理、运行的底层运行时支持。 |
用户接触 | 通过 CLI、Desktop 等工具接触。 | 通常通过 CLI 或 API 间接操作。 |
Docker 版本发布历史:较大的几次版本变更
Docker自问世以来,经历了多次重大版本变更,这些变更是为了提升性能、安全性、稳定性和用户体验。以下是一些较为重要的版本变更:
-
Docker Engine 1.x 系列(2013-2017)
- Docker 项目刚刚起步,主要用于容器化和镜像管理。
docker-compose
作为一个独立工具(由 Python 编写)于 2014 年发布。
-
Docker 1.13.1(2017 年 2 月)
- 引入
docker stack
命令,支持基于 Compose 文件的服务编排(Swarm 模式)。 - 支持 Compose v3 文件格式,优化多容器服务定义与 Swarm 集成。
- 引入
-
Docker Engine 17.x(2017)(
Community
和Enterprise
分离)Docker Engine
被分为Docker CE
(社区版)和Docker EE
(企业版)。- 仍然使用独立的
docker-compose
,其功能逐步完善,支持更多的 Docker 功能,如网络和卷。 Compose v1
成为大规模生产环境的实际标准。
-
Docker Engine 20.10(2020 年 12 月,支持 Compose v2 的起点)
- 引入了对 Compose v2 的支持(
docker-compose
v1继续保留,但逐渐转向 v2。),这是一个基于 Go 的重写版本,作为 Docker CLI 的插件运行。 - v2 的主要改进包括性能优化、原生支持 Kubernetes,以及改用
docker compose
命令(无破折号)。 - 用户开始过渡到使用
docker compose
。
- 引入了对 Compose v2 的支持(
-
Docker Desktop 4.4 / Docker Engine 20.10.13(2021 年底)
-
在 Docker Desktop 中,Compose v2 成为默认工具。
-
官方明确推荐使用
docker compose
命令。 -
在 Docker Desktop 和 Linux 系统中,
docker-compose-plugin
替代了docker-compose
。- 可以通过
docker compose version
验证是否使用了 v2。
- 可以通过
-
-
Docker Engine 24.0(2023 年 5 月)
- 完全移除了对
docker-compose
(v1)的支持。 - Compose v2 成为唯一选项,并直接作为 Docker 的插件运行。
- 不再包含独立的
docker-compose
,用户需要切换到docker compose
。(如果手动方式安装独立版本的话,基本还是可用的,不太建议)
- 完全移除了对
为了展示的更加直观一些,整理为表格如下:
时间 | Docker 版本 | 重要变更 | 对 Compose 的支持 |
---|---|---|---|
2014 年 10 月 | Docker Compose 发布 | Docker Compose (v1) 发布,作为独立工具,用于定义和管理多容器应用(以 Python 编写)。 | 初始支持,需单独安装 docker-compose 工具。 |
2017 年 2 月 | Docker 1.13.1 | 引入 docker stack 命令,支持基于 Compose 文件的服务编排(Swarm 模式)。 | 支持 Compose v3 文件格式,优化多容器服务定义与 Swarm 集成。 |
2017 年 3 月 | Docker 17.03 | Docker 开始分为 CE 和 EE 版本,采用新的版本命名规则。 | 继续支持独立的 docker-compose ,推荐使用 v3 文件格式进行编排。 |
2020 年 12 月 | Docker 20.10 | 引入 Compose v2(基于 Go 重写),作为 Docker CLI 插件运行,支持 docker compose 命令。 | 初步支持 Compose v2,但 docker-compose 工具仍保留。 |
2021 年底 | Docker 20.10.13 | 在 Docker Desktop 中,Compose v2 成为默认工具,推荐使用 docker compose 。 | v2 稳定版发布,独立的 docker-compose (v1)逐渐被弃用。 |
2023 年 5 月 | Docker 24.0 | 完全移除对 Compose v1 的支持,Compose v2 成为唯一选项。 | 不再支持 docker-compose 命令,用户必须使用 docker compose 。 |
docker compose文件版本的变更整理为表格如下:
文件格式版本 | 引入版本 | 关键特性 | 支持工具版本 |
---|---|---|---|
v1 | 初始版本 | 基础服务、网络、卷支持 | Compose v1 |
v2 | Docker 1.10+ | 网络隔离、命名卷等新特性 | Compose v1 |
v3 | Docker 1.13+ | Swarm 支持、服务扩展、更新策略 | Compose v1/v2 |
v3.9 | Docker 20.10+ | 最新功能优化,兼容性更新 | Compose v2 |
结语
Docker 在多次版本变更中逐步增强对 Compose 的支持,从最初的独立工具到深度集成,最终形成现代化的 docker compose
命令,支持多容器编排的强大生态系统。
我们日常在使用docker或者其他工具的时候,尽量做到了解到其重要的版本变更(所有的版本的话那就太多了,也没有记的必要),更好地根据自己的实际需求选择合适的版本。
评论记录:
回复评论: