Docker介绍和重大版本变更历史

Docker介绍和重大版本变更历史
程序员七平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-composev1继续保留,但逐渐转向 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或者其他工具的时候,尽量做到了解到其重要的版本变更(所有的版本的话那就太多了,也没有记的必要),更好地根据自己的实际需求选择合适的版本。
评论
匿名评论隐私政策
TwikooWaline
✅ 你无需删除空行,直接评论以获取最佳展示效果




