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

912 阅读6分钟

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包含的工具.png

Docker Engine 的定义

Docker Engine 是 Docker 平台的核心组件,专注于容器的运行时管理。它具体包括以下部分:

  1. Docker Daemon (dockerd) :核心服务,负责实际的容器操作。
  2. Docker CLI (docker) :命令行工具,用于与 Daemon 交互。
  3. REST API:允许通过编程方式与 Daemon 交互。
  4. Container Runtime:底层运行时,用于执行和隔离容器(如 containerd)。

Docker 与 Docker Engine 的关系

  1. Docker 是整个平台,Docker Engine 是其中的核心技术

    • Docker Engine 提供容器的创建、管理、运行、网络、存储等核心功能。
    • Docker 作为平台,整合了多个工具和生态系统(如 Docker ComposeDocker SwarmDocker Hub)。
  2. Docker CLI 是 Docker Engine 的一部分

    • Docker CLI 是一个直接与 Docker Engine 交互的工具,是开发者使用 Docker 最常接触的部分。
  3. 品牌与技术的区别

    • 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)(CommunityEnterprise 分离)

    • 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
  • 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.03Docker 开始分为 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 composev2 稳定版发布,独立的 docker-compose(v1)逐渐被弃用。
2023 年 5 月Docker 24.0完全移除对 Compose v1 的支持,Compose v2 成为唯一选项。不再支持 docker-compose 命令,用户必须使用 docker compose

docker compose文件版本的变更整理为表格如下:

文件格式版本引入版本关键特性支持工具版本
v1初始版本基础服务、网络、卷支持Compose v1
v2Docker 1.10+网络隔离、命名卷等新特性Compose v1
v3Docker 1.13+Swarm 支持、服务扩展、更新策略Compose v1/v2
v3.9Docker 20.10+最新功能优化,兼容性更新Compose v2

结语

Docker 在多次版本变更中逐步增强对 Compose 的支持,从最初的独立工具到深度集成,最终形成现代化的 docker compose 命令,支持多容器编排的强大生态系统。

我们日常在使用docker或者其他工具的时候,尽量做到了解到其重要的版本变更(所有的版本的话那就太多了,也没有记的必要),更好地根据自己的实际需求选择合适的版本。