容器似乎是一项相对较新的技术突破,但其起源可追溯到 20 世纪 70 年代,当时 Unix 系统首次使用类似容器的概念来隔离应用程序。时间快进到 2013 年,Docker 通过推出便携式、用户友好的容器平台彻底改变了这一理念,并引发了广泛的采用。2015 年,Docker 在创建开放容器计划 (OCI)方面发挥了重要作用,旨在促进容器生态系统内的开放标准。凭借 OCI 提供的稳定性,容器技术在整个科技界传播开来。
尽管 Docker Desktop 是创建容器化应用程序的领先工具,但 Docker 仍然存在许多误解。在本文中,我们将揭穿关于 Docker 的误解,并解释这项变革性技术的功能和优势。
1 误解一:Docker 不再开源
Docker 由多个组件组成,其中大多数都是开源的。核心 Docker Engine 是开源的,并根据 Apache 2.0 许可证获得许可,因此开发人员可以继续自由使用和贡献。Docker 生态系统的其他重要部分,如 Docker CLI 和 Docker Compose,也保持开源。这使社区能够保持透明度、贡献改进并定制他们的容器解决方案。Moby 项目最能体现 Docker 对开源的承诺。2017 年,Moby 从当时庞大的 Docker 代码库中分离出来,提供一组“构建块”来创建容器化解决方案和平台。Docker 使用 Moby 项目来开发免费的 Docker Engine 项目和我们的商业 Docker Desktop。用户还可以在 Docker Hub 上找到受信任的开源内容。这些 Docker 赞助的开源和 Docker 官方镜像提供了开源项目的受信任版本和可靠的构建块,以实现更好的开发。Docker 是 OCI 的创始人之一,并且仍然是该组织的重要贡献者,该组织制定了容器标准。该计划确保 Docker 和其他容器技术保持互操作性,并保持对开源原则的承诺。
2 误解二:Docker 容器是虚拟机
Docker 容器经常被误认为是虚拟机 (VM),但这两种技术的运作方式截然不同。与虚拟机不同,Docker 容器不包含整个操作系统 (OS)。相反,它们共享主机操作系统内核,从而使其更轻量、更高效。虚拟机需要虚拟机管理程序来为客户操作系统创建虚拟硬件,这会带来大量开销。Docker 仅打包应用程序及其依赖项,从而缩短启动时间并最大程度地降低性能开销。通过高效利用主机操作系统的资源,Docker 容器总体上比虚拟机使用的资源更少,而虚拟机需要大量资源才能同时运行多个操作系统。Docker 的架构可以在单个主机上高效运行大量独立的应用程序,从而优化基础设施和开发工作流程。了解这一区别对于最大限度地发挥 Docker 的轻量级和可扩展潜力至关重要。但是,在非 Linux 系统上运行时,Docker 需要模拟 Linux 环境。例如,Docker Desktop 使用完全托管的 VM,通过在此 VM 内运行其 Linux 组件,在 Windows、Mac 和 Linux 上提供一致的体验。
3 误解三:Docker Engine、Docker Desktop 和 Docker Enterprise Edition 都是一样的
人们对可用的不同 Docker 选项感到相当困惑,其中包括:Mirantis Container Runtime:Docker Enterprise Edition(Docker EE)于 2019 年出售给 Mirantis,并更名为 Mirantis Container Runtime。该软件由 Mirantis 管理和销售,专为生产容器部署而设计,为现有编排工具提供了轻量级替代方案。Docker Engine:Docker Engine 是基于 Moby 项目构建的完全开源版本,提供 Docker Engine 和 CLI。Docker Desktop:Docker Desktop 是 Docker 销售的一款商业产品,它将 Docker Engine 与附加功能相结合,以提高开发人员的工作效率。DockerBusiness 订阅包括面向企业的高级安全和治理功能。所有这些变体都符合 OCI 标准,主要在功能和体验方面有所不同。Docker Engine 面向开源社区,Docker Desktop 通过一整套用于构建和扩展应用程序的工具提升开发人员的工作流程,而 Mirantis Container Runtime 为企业生产环境提供了具有高级管理和支持的专用解决方案。了解这些区别对于选择合适的 Docker 变体以满足特定项目要求和组织目标至关重要。
4 误解四:Docker 与 Kubernetes 是一回事
这种误解源于 Docker 和 Kubernetes 都与容器化环境相关。尽管它们都是容器生态系统中的关键参与者,但它们扮演着不同的角色。Kubernetes (K8s)是一种用于大规模管理容器实例的编排系统。此容器编排工具可自动跨主机集群部署、扩展和操作多个容器。其他编排技术包括 Nomad、无服务器框架、Docker 的 Swarm 模式和 Apache Mesos。每种技术都提供不同的功能来管理容器化工作负载。Docker 主要是用于开发、运送和运行容器化应用程序的平台。它专注于将应用程序及其依赖项打包到可移植容器中,通常用于不需要扩展的本地开发。Docker Desktop 包括 Docker Compose,旨在在本地协调多容器部署在许多组织中,Docker 用于开发应用程序,然后将生成的 Docker 映像部署到 Kubernetes 进行生产。为了支持此工作流程,Docker Desktop 包含一个嵌入式 Kubernetes 安装和 Compose Bridge 工具,用于将 Compose 格式转换为 Kubernetes 友好的代码。
5 误解五:Docker 不安全
人们认为 Docker 不安全,这通常是由于误解了 Docker 内部的安全性实现方式。为了帮助减少安全漏洞并最大限度地减少攻击面,Docker 提供了以下措施:5.1 选择加入安全配置除了少数组件外,Docker 的运行基于安全性。这种方法为新用户消除了障碍,但意味着 Docker 仍然可以配置为更安全,以满足企业考虑以及具有敏感数据的安全意识的用户的需求。Docker Engine 可以在无 root 模式下运行,即 Docker 守护程序无需 root 权限即可运行。此功能可减少恶意代码逃离容器并在主机上获取 root 权限的潜在影响范围。Docker Desktop 通过提供增强容器隔离 (ECI)进一步提高了安全性,它提供了无根模式无法提供的高级隔离功能。5.2 内置安全功能此外,Docker 安全性还包括内置功能,例如命名空间、控制组 (cgroups) 和 seccomp 配置文件,它们提供隔离并限制容器的功能。5.3 SOC 2 Type 2 认证和 ISO 27001 认证值得注意的是,作为一款开源工具,Docker Engine 不在 SOC 2 Type 2 认证或 ISO 27001 认证范围内。这些认证适用于 Docker, Inc. 的付费产品,这些产品提供额外的企业级安全性和合规性功能。这些付费功能在 Docker 安全博客文章中概述,重点是增强安全性并简化 SOC 2、ISO 27001、FedRAMP 和其他标准的合规性。除了这些安全措施之外,Docker 还在 Docker 文档和培训材料中提供了最佳实践,以帮助用户学习如何有效地保护他们的容器。认识和实施这些功能可以降低安全风险,并确保 Docker 可以成为容器化应用程序的安全平台。
6 误解六:Docker 已死
这种误解源于过去十年容器生态系统的快速增长和变化。为了跟上这些变化,Docker 得到了积极开发,并被广泛采用。事实上,Stack Overflow 社区连续第二年在 2024 年开发者调查中将 Docker 评为使用最多、最受期待的开发者工具,并将其评为最受赞赏的开发者工具。Docker Hub 是世界上最大的容器镜像存储库之一。根据《2024 年 Docker 应用程序开发状况报告》,Docker Desktop、Docker Scout、Docker Build Cloud 和 Docker Debug 等工具是三分之二以上容器开发工作流程不可或缺的一部分。此外,作为 OCI 的创始成员和 Moby 项目的管理者,Docker 继续在容器化领域发挥着指导作用。在自动化领域,Docker 对于构建 OCI 镜像和为构建队列创建轻量级运行器至关重要。随着数据科学和 AI/ML 的兴起,Docker 镜像促进了模型、笔记本和应用程序的交换,并得到了 Docker Desktop 中 GPU 工作负载功能的支持。此外,Docker 被广泛用于快速且经济高效地模拟测试场景,作为部署实际硬件或虚拟机的替代方案。
7 误解七:Docker 很难学
人们认为 Docker 很难学,这通常是因为人们认为容器概念和 Docker 的众多功能都很复杂。然而,Docker 是一项基础技术,全球有超过 2000 万开发人员在使用,而且有无数资源可供学习 Docker。Docker, Inc. 致力于提升开发者体验,为 Docker Desktop 及其支持产品打造直观、用户友好的产品设计。文档、研讨会、培训和示例可通过 Docker Desktop、Docker 网站和博客以及 Docker Navigator 新闻通讯获取。此外,Docker 文档网站提供全面的指南和学习路径,与 Docker 联合制作的 Udemy 课程可帮助新用户了解容器化和 Docker 的使用。蓬勃发展的 Docker 社区还贡献了大量的内容和资源,包括视频教程、操作方法和现场讲座。
8 误解八:Docker 和容器技术只适合开发人员
Docker 仅适用于开发人员的想法是一种常见的误解。Docker 和容器不仅用于开发,还用于各个领域。Docker Desktop 能够在 Windows、macOS 或 Linux 上运行容器化工作负载,用户只需具备极少的技术知识。其集成功能(同步主机文件系统、网络代理支持、隔离容器和资源控制)可确保管理员能够实施治理和安全。数据科学:Docker 提供一致的环境,使数据科学家能够无缝共享模型、数据集和开发设置。医疗保健:Docker 部署可扩展的应用程序来管理患者数据和运行模拟,例如跨不同医院系统的医学成像软件。教育:教育工作者和学生使用 Docker 创建可重复的研究环境,以促进协作并简化编码项目设置。Docker 的多功能性不仅限于开发,还为各种应用程序提供一致、可扩展且安全的环境。
9 误解九:Docker Desktop 只是一个 GUI
有人认为 Docker Desktop 仅仅是一个图形用户界面 (GUI),而这种误解忽视了它旨在增强开发人员体验、简化容器管理和提高生产力的广泛功能,例如:9.1 跨平台支持Docker 基于 Linux,但大多数开发者工作站运行 Windows 或 macOS。Docker Desktop 使这些平台能够在与主机系统的网络、文件系统和资源集成的完全托管的 VM 中运行 Docker 工具。9.2 开发人员工具Docker Desktop 包括内置的 Kubernetes、用于供应链管理的 Docker Scout、用于更快构建的 Docker Build Cloud 和用于容器调试的 Docker Debug。9.3 安全和治理对于管理员来说,Docker Desktop 提供注册表访问管理和镜像访问管理、增强容器隔离、单点登录(SSO)授权、设置管理,成为企业部署和管理的必备工具。
10 误解十:Docker 容器只适用于微服务
尽管 Docker 容器在微服务架构中很受欢迎,但它们可以用于任何类型的应用程序。例如,单片应用程序可以进行容器化,从而允许它们及其依赖项被隔离到可以在不同环境中运行的版本化映像中。如果需要,这种方法可以逐步重构为微服务。此外,Docker 非常适合快速原型设计,允许快速部署最小可行产品 (MVP)。与部署在虚拟机或裸机上的原型相比,容器化原型更易于管理和重构。现在您已经了解了事实,很明显,采用 Docker 可以显著提高各种用例的生产力、可扩展性和安全性。Docker 的多功能性,加上广泛的学习资源和强大的安全功能,使其成为现代软件开发和部署中不可或缺的工具。采用 Docker 及其真正的功能可以显著提高您的用例的生产力、可扩展性和安全性。
上一条:为什么要使用Docker
品质保证
多年的生产力软件专家
专业实力
资深技术支持项目实施团队
安全无忧
多位认证安全工程师
多元服务
软件提供方案整合,项目咨询实施
购软平台-找企业级软件,上购软平台。平台提供更齐全的软件产品、更专业的技术服务,同时提供行业资讯、软件使用教程和技巧。购软平台打造企业级数字产品综合应用服务平台。用户体验和数字类产品的专业化服务是我们不断追求的目标。购软平台您身边的企业级数字产品优秀服务商。