Docker 架构概述和 Docker 组件 [适合初学者]
已发表: 2020-12-31如果您最近接触过容器世界,那么了解协同工作以提供容器化优势的底层元素可能不是一个坏主意。 但在此之前,您可能会问一个问题。 容器解决了什么问题?
在典型的开发生命周期中构建应用程序后,开发人员将其发送给测试人员进行测试。 但是,由于开发和测试环境不同,代码无法正常工作。
现在,主要有两种解决方案——要么使用虚拟机,要么使用容器化环境,例如 Docker。 在过去的美好时光中,组织过去常常部署虚拟机来运行多个应用程序。
那么,为什么他们开始采用容器化而不是虚拟机呢? 在本文中,我们将对所有此类问题进行详细解释。
在这个奇妙的工具背后,必须有同样经过深思熟虑的架构。 在了解 Docker 架构组件之前,让我们先了解一下 Docker 容器以及它们如何优于 VM。
目录
码头集装箱
Docker 是一个开源项目,它提供了在称为容器的松散隔离和包含环境中创建、打包和运行应用程序的能力。

凭借 Docker 平台提供的所有隔离和安全性,它允许您在特定主机上同时运行多个容器。
Docker 容器被广泛采用的原因包括
- 它允许开发人员在本地编写代码并使用容器与他们的团队共享工作。
- 他们可以将他们的应用程序推送到测试环境中,这些环境是容器并执行自动化测试。
- 当发现错误时,可以在开发环境中修复它们,然后重新部署。
- 获得修复就像将更新的图像推送到生产环境一样简单。
在深入探讨该主题之前,我们必须将传统的虚拟化实践与新一代容器化区分开来。
虚拟机与 Docker 容器
在我们将容器化用于我们的 DevOps 实践之前,虚拟机是最重要的。 我们曾经为每个应用程序创建虚拟机。
虽然虚拟机满足了几乎所有的需求,但使用虚拟机的缺点是很麻烦,并且从底层主机分配了所有需要的内存和硬件资源。
然而,容器化很容易避免这种情况,因为容器提供操作系统级别的虚拟化并且通常需要更少的内存。 因此,它变得流行并最终被 DevOps 社区采用。
图片来源
上图描述了虚拟机和容器的架构有何不同,以及为什么容器现在在日常开发过程中已经超越虚拟机。 与虚拟机不同,容器位于容器引擎之上以提供操作系统级虚拟化,从而节省许多资源。
码头引擎
在讨论 Docker 的不同架构组件之前,有必要了解 Docker 的工作流程。 让我们看一下 Docker Engine 及其几个部分,这将使我们了解 Docker 系统的工作原理。 Docker 引擎主要是一个典型的客户端-服务器应用程序,具有三个主要组件。
服务器(守护进程)
Docker 守护进程是一个在后台运行并管理所有 Docker 对象的连续进程。 它监听客户端提出的 Docker API 请求并持续处理它们。
休息 API
它是 Docker 客户端用来与 Docker 守护进程交互的接口。 客户端可以通过 API 与守护进程对话,并向它提供指令。
客户
Docker 客户端是一个可以与守护进程交互的命令行界面 (CLI)。 它简化了容器管理的整个过程。

图片来源
Docker 客户端(可以是 HTTP 客户端,例如 CLI)与守护程序对话,守护程序执行创建、运行和共享容器的繁重任务。 客户端和守护程序既可以在同一台机器上运行,也可以将客户端连接到远程守护程序。 客户端和守护进程通过套接字或网络接口使用 Rest API 相互通信。 Docker 客户端帮助用户管理 Docker 对象,例如容器、图像、卷等。了解有关 Docker 项目的更多信息
报名参加世界顶尖大学的软件开发课程。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。
建筑构件
如前所述,Docker 使用客户端-服务器架构,客户端通过 Rest API 与守护进程对话。 Docker 架构由几个组件组成,如下所述。
图片来源
守护进程
它监听客户端发起的 API 请求并管理 Docker 对象,包括容器、镜像、卷和网络。 它还可以与其他守护进程通信以管理 Docker 服务,尤其是管理大型 Docker 网络。
客户
Docker 用户可以使用 Docker 客户端与守护进程通信。 用户使用诸如 CLI 之类的客户端执行诸如“Docker run ...”之类的命令,然后将这些命令转发给 Docker(守护进程),最终执行它们。 Docker 客户端与多个守护进程通信。
登记处
它存储 Docker 映像,可以是公共的或私有的。 Docker 配置为默认在 Docker Hub 上查找图像。 当客户端发出拉取或运行命令时,将从存储库中拉取图像。
泊坞窗对象
在使用 Docker 时,我们与多个对象进行交互,例如容器、图像、卷、网络等。
其中一些对象是
图片
它是一个只读模板,包含创建容器的说明。 它还包含描述容器功能的元数据。 用户可以从 Docker 注册表中提取镜像,并在它们之上创建可写的镜像层,以创建自定义镜像以满足其应用程序的需求。 一些流行的想法包括 Ubuntu、Nginx、MySQL 等。这些想法可以跨团队共享,帮助他们在应用程序上协作工作。
容器
容器是为应用程序提供隔离环境的镜像实例。 他们只能访问由用于构建它们的图像定义的资源。
网络
Docker Networks 允许同一网络上的隔离容器进行通信和共享资源。 Docker提供的一些网络包括bridge、host、overlay、Macvlan等。
贮存
Docker 允许您在驱动程序的帮助下将数据存储在可写容器层中。 Docker 允许四种持久存储选项——Docker 卷、卷容器、目录挂载和存储插件。
最广泛使用的存储选项是卷。 它们被放置在主机文件系统上,并允许多个容器在这些卷中共享和写入数据。
结论
Docker 使用一组最先进的底层技术为其用户提供高效的容器化服务。 毫无疑问,近年来,Docker 已经开始在开发者社区中获得关注,并将在未来几年继续这样做。
由于容器提供了广泛的好处,例如资源效率、可扩展性等,它正确地确保了它在甲板上的位置。
在本文中,我们讨论了 Docker 的一些最基本的概念,例如 Docker 工作流程、其架构和底层技术,以及容器、图像、注册表、网络等几个 Docker 对象。
您现在正步入正轨,深入了解 Docker 容器的美丽世界。 您现在应该更好地了解不同的 Docker 资源如何协同工作,从而为您提供一系列功能,让您能够无缝地构建、部署和共享应用程序。
与 upGrad 一起学习 Docker 架构
使用 upGrad 加快您的应用程序构建之旅。
升级教育列兵。 Ltd. 正在提供 DevOps 软件开发专业化的独家课程,这使有抱负的人准备好被大型 IT 巨头所吸引。

课程亮点
upGrad 的大数据软件开发专业执行 PG 计划是一门精心设计的在线课程,为期 12 个月。
在本课程中,您将
- 获得对数据科学和机器学习内容的独家访问权
- 处理实时项目和任务
- 获得 360 度的职业支持
- 学习十种编程语言和工具
- 获得专门的学生指导
使用 upGrad 让自己的 DevOps 应用程序开发做好准备。
干嘛要等
今天申请!
