2022 年 Docker 新人和有经验者面试问答
已发表: 2021-01-06当我们想象一艘船时,我们不可能忽略方向舵。 同样,当我们想到 DevOps 时,我们必然会将 Docker 纳入我们的思考范围。 鉴于 DevOps 的未来范围在当代背景下已经如此广泛地扩展,因此必须了解 DevOps 所依赖的基础是什么。
Docker 和 DevOps 之间的一个公平类比是,建筑物的基础和同一建筑物的不同楼层。 本质上,Docker 是构建 DevOps 的平台。 大多数自动化驱动的技术,反过来又在现代无处不在,需要构建和分发软件应用程序的无缝渠道,以及持续维护这些应用程序,以便对可能出现的任何错误进行故障排除。
这正是 Docker 成为开发人员资产的地方。 因此,越来越多的企业正在尝试将 Docker 集成到其技术带宽中,以简化操作并在系统中包含更多的自动化范围。 难怪随着对基于 Docker 的编程需求的增长,对具有 Docker 知识和专长的程序员的需求也将成正比增长。
如今,大多数 DevOps 和软件开发的面试都涉及一个或多个关于 Dockery 的问题。 因此,在尝试新的 DevOps 角色时,建议您提高您的 Docker 技能。 继续阅读以查找有关 Docker 的一些最常见的面试问题!
Docker 面试问答
1. 你会说 Docker 在今天很重要吗? 为什么或者为什么不?
Docker 可以方便地将众多软件应用程序整合到一个系统中,无论是虚拟机还是物理硬件。 这反过来又使单个开发人员能够向应用程序添加不同的维度,并从单个单元管理应用程序的多个方面。 因此,Docker 一直享有广泛的客户群,其中甚至包括一些知名人士。 为了说明这种流行背后的原因,让我们以一个常见的电子钱包为例。

只需轻触一个选项卡,您就可以购物、支付账单和转账的应用程序需要一系列复杂的编程。 此类动态应用程序通常包含不同的元素,以不同的编程语言编写脚本,或者也可能是用相同语言编码的三个不同应用程序的合并。 通常,这只会在可以托管多个应用程序的特定类型的机器可用时运行。
但由于此类机器的可用性很少且相差甚远,因此大多数开发人员求助于 Docker 来提出可行的解决方案。 Docker 为操作系统提供了一个主机,反过来,它可以支持多个应用程序及其各自的库和依赖项。 这确实是一个开创性的解决方案,使企业能够以具有成本效益的方式扩展他们的创新。
因此,在参加基于技术的面试时,如果一个人能够以他们在 Docker 中的才能吸引招聘人员,那么一个人就会自动超越其他人。
2. 为什么我们需要 Docker?
正如上面示例中所解释的,Web 应用程序通常包含它们自己的一组库和依赖项。 因此,很难在不同的环境中运行它们并将它们与相关应用程序一起用于高级 DevOps。 作为这个难题的解决方案,Docker 提供了一个平台,可以将不同的应用程序及其库和依赖项集成到一个虚拟容器中。
这使得多个容器包可以在一台机器上同时运行。 它为一致的开发、测试和部署提供了理想的环境。 Docker 已经成为 DevOps 工程师不可或缺的工具。
阅读:面向初学者的 Docker 项目理念
3、Docker有什么优势?
一个统一的平台,将应用程序的所有元素打包并容器化,以促进生产和部署环境的流动性,这确实是所有开发人员的天赐之物。 这就是为什么 Docker 在软件开发领域一直享有盛誉的原因。 它具有一系列具体的优势,反过来又促进了更敏捷和直观的应用程序开发,并且是 DevOps 领域进步不可或缺的一部分。
- 在 Docker 的帮助下,可以将具有不同规格和要求的多个应用程序托管在一个单一的平台上。 这里唯一的关键是应用程序必须具有兼容的操作系统要求。
- Docker 提供优化的存储。 因此,许多应用程序可以存储在一起,所有这些都不会耗尽大量磁盘空间。 这就是 Docker 容器的美妙之处,它仅在几兆字节内就包含了整个范围的应用程序。
- 通过在一个统一的平台上组合不同的应用程序,Docker 促进了持续和及时的软件交付。
- 再一次,像 Docker 这样的容器化解决方案在早期检测和轻松解决问题方面非常有用。
- 如果没有 Docker,同时部署多个应用程序的唯一可能方法是使用能够托管不同应用程序的虚拟机。 但这需要巨大的内存空间。 作为一个强大的替代方案,Docker 将应用程序容器化,并且在没有任何内置操作系统的情况下执行此操作。 而是在单台机器的目标操作系统上运行。 这提高了效率并有助于节省大量的内存空间。
- 从商业的角度来看,这可能带来巨大的优势。 首先,更简单的部署直接转化为更快地交付软件功能和升级。 因此,企业不仅可以在更短的时间内迎合更多客户,而且可以不断升级服务以吸引新客户。
- 由于使用 Docker 可以减少运行多个应用程序的硬件需求,因此在降低业务成本方面大有帮助。 通过使用 Docker,企业能够以更具成本效益的方式为其产品增加价值。
4. 使用 Docker 有什么缺点吗?
尽管有诸多优势,但 Docker 的部署和管理仍存在一个障碍。 这围绕着操作系统的兼容性要求。 只有具有相同操作系统兼容性的应用程序才能与 Docker 一起容器化。 这需要对可以在 Docker 范围内打包和运行的应用程序的类型和数量进行严格限制。
5. Docker 容器由什么组成?
Docker 容器通常由一个应用程序及其所有库和其他依赖项组成。 Docker 容器通过与其他几个共享给定主机操作系统空间的容器共享内核来运行。 Docker 容器可以在任何地方运行,与环境无关。
它不需要任何特定的基础设施。 它既可以在物理计算机系统上运行,也可以像任何云计算基础设施一样运行在虚拟机上。 可以将 Docker 容器想象为 Docker 映像的运行时实例。
6. Docker Image 是什么意思?
解释 Docker 映像和 Docker 容器之间关系的最佳方式是在蓝图和实际构建之间进行比较。 Docker 镜像实际上是 Docker 容器的蓝图。
它基于 Docker 镜像创建 Docker 容器。 一旦用户运行 Docker 映像,就会创建一个实例 Docker 容器。 这些镜像是使用 build 命令制作的,然后可以部署在任何基于 Docker 的环境中。
7. Docker 如何帮助构建与环境无关的系统?

Docker 的独特之处在于它没有任何基础设施规范。 无论环境如何,它都可以在任何系统上运行。 Docker 的三个主要属性使这成为可能。 只读文件系统、卷和环境变量注入是 Docker 的三个特性,有助于构建与环境无关的系统。
8. 什么是 Docker Hub?
正如我们所了解的,Docker 容器是建立在 Docker 镜像的实例之上的。 正如 Docker 容器存储在给定操作系统的内核中一样,Docker 镜像本身也需要一个驻留的地方。 此注册表或 Docker 映像集合通常称为 Docker Hub。 Docker Hub 是一个公开可用的 Docker 映像存储库,用户可以在其中访问 Docker 映像并创建自定义的 Docker 容器。
Docker Hub 存储 Docker 镜像,因为这些镜像可能很大,并且使得将文件从存储库传输到用户系统变得很麻烦。 为了避免 Docker Hub 中包含的镜像由其他镜像层组成。 因此,当发生传输时,只有少量数据通过网络发送。
另请阅读:印度的 Docker 工资
9. Docker 架构是由什么组成的?
Docker 由三个主要组件组成,所有这些组件共同构成了 Docker 引擎,而 Docker 引擎又是 Docker 架构的核心。
Docker Engine 本质上是一个客户端-服务器应用程序,是 Docker 平台的驱动力。 Docker 引擎负责 Docker 容器的整体功能。 它由三个重要元素组成。
Docker 引擎的第一个元素是服务器,它基本上是一个运行称为守护程序的命令的进程。 它创建和管理 Docker 平台的每个部分,包括容器、映像、卷和网络。
Docker 引擎的下一个组件是 REST API。 REST API 描述了服务器的功能。 它向服务器指示手头的任务,并规定应用程序和服务器之间的交互如何进行。
最后,我们来到了 Docker Engine 的最后一个元素,即 Client。 客户端就像用户和 Docker 平台之间的桥梁。 它是一个命令行界面,可促进用户和平台之间的各种形式的界面。
10. 什么是 Dockerfile?
我们了解 Docker 架构的客户端元素允许用户使用命令行与平台进行交互。 此行命令以文本文档的形式出现,用户可以调用它来组装 Docker 映像。
这个文本文档只不过是一个 Dockerfile。 Dockerfile 由读取哪些 Docker 可以自动构建图像的指令组成。 使用 Dockerfile,Docker 能够执行可以连续运行的各种命令行指令。
11. 能否提供一些常见的Dockerfile指令示例?
Dockerfile 是一个庞大的 Docker 命令集合。 然而,为了使用 Docker,每次都必须调用一些基本指令。
最常见的 Dockerfile 指令是“FROM”。 FROM 用于为任何 Docker 镜像实例创建基础镜像。 它恰好是给定 Dockerfile 中的第一条指令。
由于大量 DevOps 工程师使用docker 来构建自动化,另一个常用的 Dockerfile 指令是“LABEL”。 LABEL 可以方便地根据特定项目、可用许可或模块的要求组织 Docker 映像。 使用 LABEL,可以定义一个键值对,这反过来有助于以编程方式处理 Dockerfile。
RUN 是另一个常用的 Dockerfile 指令,用于有效升级 Docker 映像。 当想要在现有图像之上的不同层上执行任何特定指令时,可以使用此命令。 RUN 命令用于向当前映像添加其他内容,这些内容可用于 Dockerfile 的后续步骤。
说到 Dockerfile 指令,不由得提到“CMD”。 CMD 用于将默认值分配给任何正在执行的 Docker 容器。 但是,如果使用了多个 CMD 命令,则最新的 CMD 命令对其余命令具有压倒性的效果。
12. Docker 中典型的工作流程是什么?
由于 Docker 容器是从 Docker 映像构建的,因此 Docker 工作流程从 Docker 映像开始,而 Docker 映像又位于 Dockerfile 中。 创建 Dockerfile 是为了向 Docker Image 提供源代码。 Dockerfile 源代码用于构建 Docker Image。 创建后,Docker 映像将分发到 Docker Hub 等注册表。
从注册表中运行 Docker 映像,最终创建并执行 Docker 容器。 其中启动 Docker 容器的生命周期。 Docker 容器的生命周期包括创建、运行、暂停或取消暂停,然后启动、停止、然后重新启动,最后被销毁或杀死。
13. Docker 与其他容器化方法有什么不同?

易用性和多功能性确实是 Docker 与其他容器化方法不同的两个因素。 与任何其他容器化技术相比,它可以在同一硬件基础架构中整合大量离散应用程序。 对于任何 DevOps 专业人士来说,Docker 的部署和维护也非常简单。 更有趣的是,Docker 容器甚至可以在不同的应用程序之间共享。
14. Docker 有哪些应用领域?
Docker 在简化配置、增强调试能力、更好地管理代码管道以及隔离应用程序方面提供了有效的解决方案。 多租户特性是另一个经常使用 Docker 的领域。
从世界顶级大学在线学习软件工程课程。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。
包起来
如果您有兴趣了解有关 docker、全栈开发的更多信息,请查看 upGrad 和 IIIT-B 的全栈软件开发执行 PG 计划,该计划专为工作专业人士设计,提供 500 多个小时的严格培训、9 个以上的项目,和任务、IIIT-B 校友身份、实用的实践顶点项目和顶级公司的工作协助。
