介绍 Docker 概念、容器等

2025-06-07

介绍 Docker 概念、容器等 

容器化作为一项颠覆性的技术,迅速普及,它使开发人员能够将应用程序及其依赖项打包到独立的单元(即容器)中。Docker 凭借其用户友好的界面和强大的功能,已成为充分发挥容器化潜力的首选解决方案。

在本文中,我们将揭秘容器化的核心概念,阐明其带来的显著优势,并深入探讨 Docker 的架构和关键组件。我们将深入探讨 Docker 与虚拟机以及容器本身的区别。在容器中,应用程序独立运行,从而提供增强的可扩展性、灵活性和效率。
在此之前,我们先来了解一下 Docker。

什么是 Docker?

Docker 是一个开源容器化平台,用于在基于云的环境中构建、测试、管理和部署应用程序。

Docker 提供了一种将应用程序打包到“容器”中的方法,该容器可以在任何安装了 Docker 软件的机器上运行。它让您可以轻松地在不同的机器或环境中运行应用程序。

如何开始使用 Docker

随着组织转向云原生和混合开发,Docker 正迅速成为构建和共享容器化应用程序的首选工具。

Docker的起源

Docker 于 2013 年首次发布,自此成为最受开发者欢迎的工具之一。Docker 的诞生源于其创始人 Solomon Hykes 在云托管服务提供商 dotCloud 开展项目时萌生的想法。

该项目要求他使用许多不同的虚拟机,每个虚拟机都运行同一软件的不同版本。这不仅难以管理,而且非常耗时。

为了使生活更轻松,所罗门创建了一个工具,使他能够将应用程序及其依赖项打包到单个容器中。

这样,他就可以轻松地在不同的机器之间移动应用程序,而不必担心兼容性问题。

Docker 使开发人员可以轻松地在一致的环境中创建、部署和运行应用程序,而无需担心机器之间的差异。

Docker 从此变得越来越流行,并得到了亚马逊和微软等商业公司的更多支持,进一步增强了其在容器管理市场的信誉。

它为何变得如此受欢迎?

Docker 之所以流行,是因为它提供了一种将应用程序及其所有依赖项打包到“容器”中的方法。

这些容器是可移植的,可以在任何安装了 Docker 运行时的机器上运行。它还提供了一种使用 Docker Hub 共享这些容器的方法,Docker Hub 类似于 GitHub,但用于 Docker 镜像。

Docker 之前的问题

过去,开发和部署软件应用程序是一个耗时且容易出错的过程。
这是因为每个应用程序都有其依赖项和配置,这些依赖项和配置经常会与其他应用程序发生冲突。

传统上,应用程序构建于一种称为“单片”的架构之上。在单片架构中,应用程序的所有组件都打包在一个大型程序中。

每行代码、库和依赖项都相互连接——这意味着应用程序的每一层都是相互构建的,这通常会产生一系列问题。

在传统方法中,代码是在特定的计算环境中开发的,当转移到新位置时,通常会导致错误。

开发人员最常抱怨的问题之一就是“它在我的机器上能用”。有了 Docker,开发人员可以进行项目协作,而不必担心破坏彼此的代码。

想象一下,您是开发团队的一员,并且正在开发一个需要 PostgreSQL 和 Redis 进行消息传递的 Javascript 应用程序。

您需要直接在操作系统上安装这些服务。团队中的任何开发者若要部署应用,都必须安装这些服务的二进制文件,进行配置,并在本地运行它们。

根据所使用的操作系统,安装可能看起来非常不同,并且可能涉及需要执行的许多步骤,并且可能会出现问题。

这个过程可能令人沮丧且成本高昂,并且您可能会在扩展和部署应用程序时遇到一些困难。

以可靠且可重复的方式部署和打包应用程序一直是一个痛点。

根据 Rob Vettor 和 Steve “ardalis” 在《为 Azure 构建云原生 .NET 应用程序》中的说法,使用此架构可能会面临的一些问题包括:

  • 该应用程序变得如此复杂,以至于没有人能够理解它。

  • 您害怕做出改变——每次改变都会带来意想不到的、代价高昂的副作用。

  • 新功能/修复的实施变得棘手、耗时且昂贵。

  • 每次发布都尽可能小,并且需要完整部署整个应用程序。

  • 一个不稳定的组件可能会导致整个系统崩溃。

  • 新技术和框架不是一种选择。

  • 实施敏捷交付方法很困难。

  • 随着代码库因永无止境的“快速修复”而不断恶化,架构也开始受到侵蚀。

  • 最后,顾问过来告诉你重写它。

因此,许多组织已转向采用云原生方法来构建容器化应用程序。

集装箱化

容器化通过将应用程序代码与相关配置文件和依赖项捆绑在一起来消除这些问题,从而可以轻松地在任何环境中部署和运行。

容器化是一种虚拟化技术,允许在单台服务器上运行多个应用程序。这对企业来说非常有利,因为它可以帮助节省服务器成本并提高效率。

容器化有很多好处,但其中最重要的一个就是它消除了“它在我的计算机上运行”的问题。

这是因为容器包含了运行应用程序所需的一切,所以它在任何环境下都能正常工作。这对软件开发人员来说是一个巨大的好处,因为它使应用程序的开发和测试变得更加容易。

如果您正在寻找一种方法来改进软件的开发和部署,那么容器化是一个很好的选择。

容器

容器有助于简化应用程序的部署流程。容器允许您将应用程序的各个组件或层级彼此隔离。它允许您在同一主机上运行不同的应用程序,而不会相互干扰。

什么是容器化
图片来源:Docker

在上图中,每个应用程序(容器)与主机操作系统中由 Docker 管理的其他容器隔离。

因此,一个容器的故障不会影响另一个容器的性能。

容器的好处。

容器化的一些主要优点包括:

  • 容器更轻,需要的资源更少,因此运行效率更高。

  • 容器可以在环境之间轻松移动,使其成为开发和测试的理想选择。

  • 容器之间的隔离可以防止一个应用程序影响另一个应用程序,从而提高稳定性和安全性。

  • 提高了安全性,因为容器隔离可以防止恶意代码感染底层系统。

  • 提高了性能,因为容器不需要在每次运行时启动。

  • 易于使用:容器化易于设置和使用,可以节省您的时间和金钱。

  • 可扩展:您可以轻松扩展容器化应用程序以满足您的业务需求。

  • 可移植性:您可以在服务器之间移动容器化的应用程序,从而可以轻松维护和更新它们。

总体而言,容器化提供了一种更高效、更强大的应用程序部署方式。

单片

单片软件架构是指所有组件紧密耦合且相互依赖的架构。这种架构传统上用于大规模应用程序。

单片架构的主要缺点是维护和修改起来比较困难。

由于所有组件都紧密耦合,一个组件的变更可能会影响其他组件。此外,单体架构的扩展难度可能比其他架构更大。

微服务

微服务是指将应用程序分解为更小的“微服务”部分,以便这些部分可以单独构建,然后在需要时连接在一起。
这可以实现更高的灵活性和可扩展性。

Docker与虚拟机的区别

Docker 和虚拟机都是组织和隔离应用程序的流行方式。

Docker与虚拟机的区别
图片来源:Medium

Docker 是一个容器化平台,允许您创建和运行独立的应用程序。使用 Docker,您可以将应用程序捆绑到容器中。

容器比虚拟机更轻量,启动速度更快。它们也更易于移植,因为它们可以部署在任何支持 Docker 的机器上。

虚拟机是在虚拟机管理程序上运行的成熟操作系统。由于需要特定的硬件配置,虚拟机的可移植性也比容器差。

它们也更重,启动时间更长。它们彼此隔离,因此攻击者即使攻陷了一台虚拟机,也无法访问同一主机上的其他虚拟机。

概括:

我们的讨论涵盖了可以帮助您开始使用 Docker 的基础知识,但您还了解了 Docker 的整体情况、创建 Docker 的原因以及它解决的问题。

您还了解了容器化,以及它如何简化从桌面到云端的应用部署。您还了解了在应用开发中使用容器的优势。

还讨论了虚拟机和 Docker 之间的区别,以及单片服务和微服务之间的区别。

了解有关初学者经常使用的 Docker 命令的更多信息。

以下资源将帮助您了解有关 Docker 的更多信息:

资源:

Red Hat 容器简介

Nana 的 TechWorld - Docker 初学者教程

Docker 初学者教程 - 什么是 Docker?容器简介

使用 Mosh 进行编程 - Docker 初学者教程

文章来源:https://dev.to/roselinebassey/introducing-docker-concepts-containers-and-more-17hc
PREV
作为开发人员,您是否患有“闪亮物体综合症”?
NEXT
软件工程到数据科学