注:机器翻译,文末附原文地址。
1.您对DevOps有什么了解?
您的答案必须简单明了。首先说明一下DevOps在IT行业中的重要性。讨论这种方法如何旨在使开发和运营团队共同努力,以最小的故障率加速软件产品的交付。包括DevOps如何成为增值实践,开发和运维工程师在整个产品或服务生命周期中(从设计阶段到部署点)携手合作。
2. DevOps与敏捷方法有何不同?
DevOps是一种文化,允许开发人员和运营团队一起工作。这样可以在整个生命周期中对软件进行持续的开发,测试,集成,部署和监视。
敏捷是一种软件开发方法,专注于迭代,增量,小型和快速发布软件以及客户反馈。它解决了客户与开发人员之间的差距和冲突。
DevOps解决了开发人员与IT运营之间的空白和冲突。
3.哪些是最受欢迎的DevOps工具?
最受欢迎的DevOps工具包括:
- Selenium
- Puppet
- Chef
- Git
- Jenkins
- Ansible
- Docke
4. DevOps的不同阶段有哪些?
DevOps生命周期的各个阶段如下:
- 计划-最初,应该为需要开发的应用程序类型制定计划。大致了解开发过程始终是一个好主意。
- 代码-根据最终用户要求对应用程序进行编码。
- 构建-通过集成前面步骤中形成的各种代码来构建应用程序。
- 测试-这是应用程序开发中最关键的一步。测试应用程序并在必要时进行重建。
- 集成-来自不同程序员的多个代码被集成到一个中。
- 部署-将代码部署到云环境中以供进一步使用。确保任何新更改不会影响高流量网站的功能。
- 操作-如果需要,对代码执行操作。
- Monitor-监视应用程序性能。进行了更改以满足最终用户的要求。
上图显示了DevOps生命周期。
5.提及DevOps的一些核心优势。
DevOps的核心优势如下:
技术优势
- 持续提供软件
- 不太复杂的问题需要处理
- 及早发现和更快地纠正缺陷
商业利益
- 更快地交付功能
- 稳定的操作环境
- 改善团队之间的沟通与协作
6.您将如何处理需要实施DevOps的项目?
以下标准方法可用于在特定项目中实施DevOps:
阶段1
对现有流程和实施的评估大约需要两到三周,以找出需要改进的地方,以便团队可以为实施创建路线图。
第二阶段
创建概念证明(PoC)。一旦接受并批准,团队就可以开始实际实施和推出项目计划。
第三阶段
现在,该项目已准备好通过逐步进行版本控制/集成/测试/部署/交付和监视来实施DevOps。
通过执行版本控制,集成,测试,部署,交付和监视的正确步骤,该项目现在可以用于DevOps实施了。
7.持续交付和持续部署之间有什么区别?
持续交付 | 持续部署 |
---|---|
确保代码可以安全地部署到生产中 | 通过自动测试的每个变更都将自动部署到生产中 |
确保业务应用程序和服务按预期运行 | 使软件开发和发布过程更快,更强大 |
通过严格的自动化测试,对生产环境进行任何更改 | 没有开发人员的明确批准,需要一种发达的监控文化 |
8. DevOps中配置管理的作用是什么?
- 支持管理和更改多个系统。
- 标准化资源配置,进而管理IT基础架构。
- 它有助于管理和管理多个服务器,并维护整个基础架构的完整性。
9.连续监视如何帮助您维护系统的整个体系结构?
DevOps中的连续监视是检测,识别和报告系统整个基础架构中的任何故障或威胁的过程。
- 确保所有服务,应用程序和资源都在服务器上正确运行。
- 监视服务器的状态,并确定应用程序是否正常运行。
- 启用连续审核,交易检查和受控监控。
10. AWS在DevOps中的作用是什么?
AWS在DevOps中扮演以下角色:
- 灵活的服务- 无需安装或设置软件即可提供即用型的灵活服务。
- 专为扩展而构建- 您可以使用AWS服务管理单个实例或扩展到数千个实例。
- 自动化 -AWS使您可以自动化任务和流程,从而有更多时间进行创新
- 安全- 使用AWS Identity and Access Management(IAM),您可以设置用户权限和策略。
- 大型合作伙伴生态系统 -AWS支持与AWS服务集成和扩展的大型合作伙伴生态系统。
11.命名三个重要的DevOps KPI。
三个重要的KPI如下:
- 故障恢复的平均时间-这是从故障中恢复所需的平均时间。
- 部署频率- 部署发生的频率。
- 失败部署的百分比- 部署失败的次数。
12.解释与配置管理有关的术语“基础架构即代码”(IaC)。
- 编写代码以管理配置,部署和自动配置。
- 使用机器可读的定义文件而不是物理硬件配置来管理数据中心。
- 确保始终如一地轻松配置所有服务器和其他基础架构组件。
- 管理云计算环境,也称为基础架构即服务(IaaS)。
13.如何使用AWS实施IaC?
首先讨论将命令写入脚本文件并在部署之前在单独的环境中对其进行测试的古老机制,以及如何用IaC替代这种方法。与为其他服务编写的代码相似,在AWS的帮助下,IaC允许开发人员使用JSON或YAML等格式以描述性方式编写,测试和维护基础架构实体。这样可以简化开发并更快地部署基础结构更改。
14.在过去的几年中,DevOps为什么得到了重视?
在谈论DevOps的日益普及之前,请讨论当前的行业情况。首先,举例说明Netflix和Facebook等大型公司如何投资DevOps来自动化和加速应用程序部署,以及这如何帮助他们发展业务。以Facebook为例,您将指出Facebook的持续部署和代码所有权模型,以及这些模型如何帮助其扩大规模,同时确保体验质量。在不影响质量,稳定性和安全性的情况下实现了数百行代码。
您的下一个用例应该是Netflix。这家流媒体和点播视频公司采用完全自动化的流程和系统遵循类似的惯例。提及这两个组织的用户群:Facebook拥有20亿用户,而Netflix将在线内容流传输给全球超过1亿用户。
这些都是很好的例子,说明DevOps如何帮助组织确保更高的发布成功率,减少错误修复之间的准备时间,通过自动化简化并持续交付,以及总体上降低人力成本。
现在,我们将研究下一组DevOps面试问题,包括-Git,Selenium,Jenkins。
用于源代码管理的DevOps面试问题— Git
15.解释集中式和分布式版本控制系统(VCS)之间的区别。
集中版本控制系统
- 所有文件版本都存储在中央服务器上
- 没有开发人员拥有本地系统上所有文件的副本
- 如果中央服务器崩溃,则项目中的所有数据都将丢失
集散控制系统
- 每个开发人员都在其系统上拥有所有版本的代码的副本
- 使团队成员可以脱机工作,并且不依赖单个位置进行备份
- 即使服务器崩溃,也没有威胁
16.将任何存储库从GitHub下载到您的计算机的git命令是什么?
从GitHub将任何存储库下载到您的计算机的git命令是 git clone。
17.如何使用Git将文件从本地系统推送到GitHub存储库?
首先,将本地存储库连接到远程存储库:
git remote add origin [复制的网址]
//例如:git remote add origin https://github.com/Simplilearn-github/test.git
其次,将文件推送到远程存储库:
git push origin master
18.裸存储库与初始化Git存储库的标准方法有何不同?
使用标准方法:
git init
- 您使用git init创建一个工作目录
- 使用所有与git相关的修订历史记录创建一个.git子文件夹
赤手空拳
git init-裸
- 它不包含任何正在工作或已签出的源文件副本
- 裸存储库将git修订历史记录存储在存储库的根文件夹中,而不是.git子文件夹中
19.以下哪个CLI命令可用于重命名文件?
- git rm
- git mv
- git rm -r
- 以上都不是
正确答案是 B)git mv
20.恢复已经推送并公开的提交的过程是什么?
您可以通过两种方式还原提交:
- 在新的提交中删除或修复错误的文件,然后将其推送到远程存储库。然后使用以下命令将其提交到远程存储库: git commit –m“ commit message”
- 创建一个新的提交,以撤消在错误的提交中所做的所有更改。使用以下命令: git revert <commit id>
示例:git revert 56de0938f
21.解释git fetch和git pull之间的区别。
Git获取 | Git拉 |
---|---|
Git提取仅从远程存储库下载新数据 | Git pull使用来自远程服务器的最新更改来更新当前的HEAD分支 |
不会将任何新数据集成到您的工作文件中 | 下载新数据并将其与当前工作文件集成 |
用户可以随时运行Git提取来更新远程跟踪分支 | 尝试将远程更改与本地更改合并 |
命令 -git fetch origin git fetch –全部 | 命令 -git pull origin master |
22.什么是Git隐藏?
使用当前分支的开发人员想要切换到另一个分支来进行其他工作,但是该开发人员不想将更改提交到您未完成的工作上。这个问题的解决方案是Git隐藏。Git存储将获取修改后的跟踪文件,并将它们保存在未完成的更改堆栈中,您可以随时重新应用它们。
23.解释在Git中分支的概念。
假设您正在处理一个应用程序,并且想向该应用程序添加新功能。您可以创建一个新分支,并在该分支上构建新功能。
- 默认情况下,您始终在master分支上工作
- 分支上的圆圈代表分支上的各种提交
- 完成所有更改后,可以将其与master分支合并
24. Git Merge和Git Rebase有什么区别?
假设您正在专用分支中使用新功能,并且另一个团队成员使用新的提交更新了master分支。您可以使用以下两个功能:
Git合并
要将新提交合并到功能分支中,请使用Git merge。
- 每当您需要合并更改时,都会创建一个额外的合并提交
- 但是,它会污染您的功能分支历史记录
Git Rebase
作为合并的替代方法,您可以将功能分支重新建立为基础。
- 将所有新提交合并到master分支中
- 它为原始分支中的每个提交创建新的提交,并重写项目历史记录
25.如何找到在特定提交中已更改的文件的列表?
获取在特定提交中已更改的文件的列表的命令是:
git diff-tree –r {提交哈希}
示例:git diff-tree –r 87e673f21b
- -r标志指示命令列出单个文件
- 提交哈希将列出该提交中已更改或添加的所有文件
26.什么是Git中的合并冲突,如何解决?
一个Git的合并冲突发生时,你有合并分支与提交的竞争,和Git需要你的帮助来决定这改变了最终合并纳入。
手动编辑有冲突的文件,以选择要在最终合并中保留的更改。
使用GitHub冲突编辑器解决
在争夺线路更改后导致合并冲突时,可以执行此操作。例如,当人们对您的Git存储库中不同分支上的同一文件的同一行进行不同更改时,可能会发生这种情况。
- 使用冲突编辑器解决合并冲突:
- 在您的存储库名称下,单击“拉取请求”。
- 在“请求”下拉列表中,单击您要解决的合并冲突请求
- 在拉取请求的底部附近,单击“解决冲突”。
- 确定是只保留分支的更改,另一个分支的更改还是进行全新的更改(可能合并两个分支的更改)。
- 删除冲突标记 <<<<<<<,=======,>>>>>>> 并在最终合并中进行所需的更改。
- 如果文件中有多个合并冲突,请向下滚动到下一组冲突标记,然后重复步骤4和5解决合并冲突。
- 解决了文件中的所有冲突后,请单击“ 标记为已解决”。
持续集成的DevOps面试问题-Jenkins
27.解释詹金斯的主从架构。
- 每次提交代码时,Jenkins管理员都会从远程GitHub存储库中提取代码。
- 它将工作负载分配给所有Jenkins奴隶。
- 根据Jenkins主服务器的请求,从服务器执行,构建,测试并生成测试报告。
28.什么是Jenkinsfile?
Jenkinsfile包含Jenkins管道的定义,并被检入到源代码控制存储库中。它是一个文本文件。
- 它允许在管道上进行代码检查和迭代。
- 它允许对管道进行审核跟踪。
- 管道只有一个真实来源,可以查看和编辑。
29.以下哪个命令从命令行运行Jenkins?
- java –jar Jenkins.war
- java –war Jenkins.jar
- java –jar Jenkins.jar
- java –war Jenkins.war
正确答案是 A)java –jar Jenkins.war
30. Jenkins流程的关键方面是什么概念?
- 管道: CD管道的用户定义模型。管道的代码定义了整个构建过程,包括构建,测试和交付应用程序
- 节点: 属于Jenkins环境且能够执行管道的机器
- 步骤: 告诉Jenkins在特定时间点该做什么的单个任务
- 阶段: 定义从概念上讲,贯穿整个管道执行的任务的子集(构建,测试,部署阶段)
31.哪个文件用于定义Maven中的依赖关系?
- build.xml
- pom.xml
- dependency.xml
- 版本.xml
正确答案是 B)pom.xml
32.解释詹金斯中的两种流水线及其语法。
Jenkins提供了两种开发管道代码的方式: Scripted 和 Declarative。
A.脚本管道:它基于Groovy脚本作为其特定于域的语言。一个或多个节点块在整个管道中完成核心工作。
句法:
- 在任何可用代理上执行管道或其任何阶段
- 定义构建阶段
- 执行与建筑阶段有关的步骤
- 定义测试阶段
- 执行与测试阶段有关的步骤
- 定义部署阶段
- 执行与部署阶段有关的步骤
B.声明式管道: 它提供了一种简单友好的语法来定义管道。在这里,管道块定义了整个管道中完成的工作。
句法:
- 在任何可用代理上执行管道或其任何阶段
- 定义构建阶段
- 执行与建筑阶段有关的步骤
- 定义测试阶段
- 执行与测试阶段有关的步骤
- 定义部署阶段
- 执行与部署阶段有关的步骤
33.如何在Jenkins中创建备份和复制文件?
为了创建备份文件,请定期备份您的JENKINS_HOME目录。
为了创建Jenkins安装程序的备份,请复制JENKINS_HOME目录。您还可以复制作业目录以克隆或复制作业或重命名目录。
34.如何将Jenkins从一台服务器复制到另一台服务器?
- 通过复制相应的作业目录,将作业从一个Jenkins安装移至另一安装。
- 通过使用不同名称克隆作业目录来创建现有作业的副本。
- 通过重命名目录来重命名现有作业。
35.列举詹金斯用来认证用户的三种安全机制。
- Jenkins使用内部数据库来存储用户数据和凭据。
- Jenkins可以使用轻型目录访问协议(LDAP)服务器对用户进行身份验证。
- 可以将Jenkins配置为采用已部署的应用程序服务器使用的身份验证机制。
36.如何部署核心插件的自定义版本?
部署核心插件的自定义版本的步骤:
- 将.hpi文件复制 到 $ JENKINS_HOME / plugins
- 删除 插件的开发目录
- 创建一个名为<plugin> .hpi.pinned的空文件
- 重新启动Jenkins 并使用您自定义的核心插件构建
37.如果管理用户已将自己锁定在管理控制台之外,那么如何暂时关闭Jenkins安全性?
- 启用安全性后,配置 文件将包含一个名为useSecurity的XML元素,该 元素 将设置为 true。
- 通过将此设置更改为 false,将在下次重新启动Jenkins时禁用安全性。
38.在詹金斯计划/运行构建的方式有哪些?
- 通过源代码管理提交。
- 其他版本完成后。
- 计划在指定时间运行。
- 手动构建请求。
39.您可以使用哪些命令手动重新启动Jenkins?
手动重启Jenkins的两种方法:
- (Jenkins_url)/ restart //强制重启,而无需等待构建完成
- (Jenkins_url)/ safeRestart //允许所有正在运行的构建在重新启动之前完成
40.硒的不同成分是什么?
硒具有以下成分:
硒综合开发环境(IDE)
- 它具有简单的框架,应用于原型制作。
- 它具有易于安装的Firefox插件。
硒遥控器(RC)
- 开发人员以任何编程语言(Java,PHP,Perl,C#等)编写代码的测试框架。
Selenium WebDriver
- 应用更好的方法来自动执行浏览器活动。
- 它不依赖JavaScript。
硒网格
- 与Selenium RC一起使用,并使用浏览器在不同的节点上运行测试。
41. Selenium WebDriver中有哪些不同的例外?
异常是在程序执行期间发生的事件,它破坏程序指令的正常流程。硒具有以下例外情况:
- TimeoutException-当执行操作的命令在规定的时间内未完成时,抛出该异常。
- NoSuchElementException-当在网页上找不到具有特定属性的元素时引发。
- ElementNotVisibleException-当元素在文档对象模型(DOM)中存在但不可见时引发。例如:HTML中使用type =“ hidden”定义的Hidden Elements。
- SessionNotFoundException -WebDriver在退出浏览器后立即执行操作。
42. Selenium可以在Android浏览器上测试应用程序吗?
Selenium能够使用Android驱动程序在Android浏览器上测试应用程序。您可以使用Selendroid或Appium框架在Android浏览器中测试本机应用程序或Web应用程序。以下是示例代码:
43. Selenium支持哪些不同的测试类型?
功能性- 这是一种 黑盒测试 ,其中的测试用例基于软件规范。
回归- 此测试有助于 在更改后在不同的功能和非功能代码区域中查找 新的错误,回归等。
负载测试- 此测试旨在 监视设备 加载后的响应。旨在研究系统在特定条件下的行为。
44.如何访问Web元素的文本?
Get命令 用于检索指定Web元素的文本。该命令不返回任何参数,但返回字符串值。
用于:
- 消息验证
- 标签
- 网页上显示的错误
句法:
字符串Text = driver.findElement(By.id(“ text”))。getText();
45.如何使用Selenium处理键盘和鼠标操作?
您可以使用高级用户交互API处理键盘和鼠标事件 。高级用户交互API包含操作和操作类。
方法 | 描述 |
---|---|
clickAndHold() | 单击时不释放当前鼠标位置 |
dragAndDrop() | 单击并按住源元素的位置 |
keyDown(modifier_key) | 执行修改键(Ctrl,Shift,Fn等) |
keyUp(modifier_key) | 执行键释放 |
46.以下哪个选项不是WebElement方法?
- getText()
- 尺寸()
- getTagName()
- sendKeys()
正确答案是 B)size()
47.什么时候使用findElement()和findElements()?
A.findElement()
它在当前网页中找到与指定定位符值匹配的第一个元素。
句法:
WebElement element = driver.findElements(By.xpath(“ // div [@ id ='example'] // ul // li”)));
B. findElements()
它查找当前网页中与指定定位符值匹配的所有元素。
句法:
列出elementList = driver.findElements(By.xpath(“ // div [@ id ='example'] // ul // li”)));
48. WebDriver中的driver.close()和driver.quit()是什么?
这是用于关闭Selenium WebDriver中的浏览器会话的两种不同方法:
- driver.close() -用于关闭当前设置了焦点的浏览器窗口。在这种情况下,仅打开一个浏览器。
- driver.quit() -关闭所有浏览器窗口,并使用driver.dispose方法结束WebDriver会话。
49.如何使用Selenium提交表单?
以下代码行使您可以使用Selenium提交表单:
WebElement el = driver.findElement(By.id(“ ElementID”));
el.submit();
用于配置管理的DevOps面试问题-Chef,Puppet,Ansible
50.为什么在Chef中使用SSL证书?
- 在Chef服务器和客户端之间使用SSL证书,以确保每个节点都可以访问正确的数据。
- 每个节点都有一个私钥和公钥对。公用密钥存储在Chef服务器中。
- 将SSL证书发送到服务器时,它将包含节点的私钥。
- 服务器将此与公钥进行比较,以识别节点并授予节点访问所需数据的权限。
51.系统启动时,您将使用以下哪个命令来停止或禁用“ httpd”服务?
- #systemctl禁用httpd.service
- #系统禁用httpd.service
- #系统禁用httpd
- #systemctl禁用httpd.service
正确答案是 A)#systemctl disable httpd.service
52.厨师中的测试厨房是什么?
Test Kitchen是Chef中的命令行工具,可以旋转实例并在其上测试食谱之前,先将其部署到实际节点上。
以下是最常用的厨房命令:
53.厨师申请与厨师客户有何不同?
- Chef-apply在客户端系统上运行。 Chef-apply在客户端系统上应用命令中提到的配方。 $厨师申请食谱_名称.rb
- Chef-client 也在客户端系统上运行。 Chef-client将服务器运行列表中的所有食谱应用于客户端系统。 $刀厨师客户
54.对请求的证书进行签名的命令是什么?
- 对于木偶版本2.7: #puppetca -sign剂主机名的- 实例: #puppetca -sign ChefAgent #puppetca符号主机名的代理 实例: #puppetca符号ChefAgent
- 对于木偶版本2.7: #puppetca -sign剂主机名的- 实例: #puppetca -sign ChefAgent #puppetca符号主机名的代理 实例: #puppetca符号ChefAgent
55.您使用哪些开放源代码或社区工具来增强Puppet的功能?
- 使用Jira跟踪配置的更改,并通过内部过程进行进一步的维护。
- 版本控制需要Git和Puppet的代码管理器应用程序的支持。
- 更改还通过Jenkin的持续集成管道传递。
56.木偶有哪些资源?
- 资源是任何配置管理工具的基本单元。
- 这些是节点的功能,例如其软件包或服务。
- 写在目录中的资源声明描述了要对该资源执行的操作或与该资源一起执行的操作。
- 执行目录时,它将节点设置为所需状态。
57. Puppet中的一门课是什么?
类在清单中被命名为块,用于配置节点的各种功能,例如服务,文件和程序包。
这些类将添加到节点的目录中,并且仅在显式调用时才执行。
apache类(字符串$ version ='latest'){
包裹{
'httpd':确保=> $ version,
之前=> File ['/ etc / httpd.conf'],}
58.什么是Ansible角色?
Ansible角色是嵌入在剧本中的任务,变量,文件和模板的独立块。
这本剧本在node1上安装了tomcat。
59.我什么时候应该使用“ {{}}”?
除非您有条件语句,例如“ when:…”,否则始终对变量使用{{}}。这是因为条件语句是通过Jinja运行的,而Jinja会解析表达式。
例如:
echo“这将显示{{foo}}的值”
when:定义了foo
使用方括号可以更轻松地区分字符串和未定义的变量。
这也可以确保Ansible不会将该行识别为字典声明。
60.使内容可重复使用/重新分发的最佳方法是什么?
有三种方法可以使内容在Ansible中可重用或重新分发:
- 角色用于管理剧本中的任务。可以通过Ansible Galaxy轻松共享它们。
- “ include”用于将子模块或另一个文件添加到剧本。这意味着一次编写的代码可以添加到多个剧本中。
- “导入”是对“包含”的改进,它确保仅将文件添加一次。当行以递归方式运行时,这很有用。
61. Ansible与Puppet有何不同?
Ansible | 木偶 |
---|---|
易于无代理安装 | 基于代理的安装 |
基于Python | 基于Ruby |
配置文件是用YAML编写的 | 配置文件以DSL编写 |
不支援Windows | 支持所有流行的操作系统 |
现在,我们将讨论一些关于变质的DevOps采访问题。
有关容器化的DevOps面试问题
62.解释Docker的体系结构。
- Docker使用客户端-服务器架构。
- Docker Client是运行命令的服务。该命令使用REST API进行翻译,并发送到Docker Daemon(服务器)。
- Docker Daemon接受请求并与操作系统进行交互以构建Docker映像并运行Docker容器。
- Docker映像是指令模板,用于创建容器。
- Docker容器是应用程序及其依赖项的可执行包。
- Docker注册表是一项在用户之间托管和分发Docker映像的服务。
63. Docker与虚拟机相比有哪些优势?
标准 | 虚拟机 | 码头工人 |
---|---|---|
记忆空间 | 占用大量内存空间 | Docker容器占用的空间更少 |
开机时间 | 开机时间长 | 开机时间短 |
表现 | 运行多个虚拟机会导致性能不稳定 | 容器具有更好的性能,因为它们托管在单个Docker引擎中 |
缩放比例 | 难以扩大规模 | 易于扩展 |
效率 | 效率低 | 高效率 |
可移植性 | 跨不同平台移植时的兼容性问题 | 轻松跨平台移植 |
空间分配 | 数据量无法共享 | 数据量在多个容器之间共享并再次使用 |
64.我们如何与不同的节点共享Docker容器?
- 可以使用Docker Swarm在不同的节点上共享Docker容器 。
- Docker Swarm是允许IT管理员和开发人员在Docker平台内创建和管理swarm节点集群的工具。
- 群由两种类型的节点组成:管理者节点和工作者节点。
65.用于创建Docker群的命令是什么?
- 在要运行管理器节点的位置创建一个群集。 Docker群初始化--advertise-addr <MANAGER-IP>
- 在管理器节点上创建群集后,就可以将工作节点添加到群集中。
- 将节点初始化为管理器后,它将立即创建令牌。为了创建工作程序节点,应在工作程序节点的主机上执行以下命令(令牌)。 docker swarm join --token SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c 192.168.99.100:2377
66.如何使用一项服务运行多个容器?
- 使用Docker Compose可以将多个容器作为单个服务运行。
- 在这里,每个容器都是独立运行的,但可以相互交互。
- 所有Docker Compose文件都是YAML文件。
67. Dockerfile的作用是什么?
- Dockerfile用于使用build命令创建Docker映像。
- 使用Docker映像,任何用户都可以运行代码来创建Docker容器。
- 构建Docker映像后,将其上传到Docker注册表中。
- 从Docker注册表中,用户可以随时获取Docker映像并构建新容器。
68.解释Docker映像和Docker容器之间的区别。
Docker映像 | Docker容器 |
---|---|
Docker映像是Docker容器的模板 | 容器是Docker映像的运行时实例 |
使用Dockerfile构建映像 | 容器是使用Docker映像创建的 |
它存储在Docker存储库或Docker集线器中 | 它们存储在Docker守护程序中 |
图像层是只读文件系统 | 每个容器层都是读写文件系统 |
69.除了YAML之外,您还可以将其用作构建Docker compose的替代文件吗?
要构建Docker组合,用户可以使用JSON文件而不是YAML。如果用户想要使用JSON文件,则他/她应指定给定的文件名:
Docker-compose -f Docker-compose.json向上
70.如何创建一个Docker容器?
任务:创建一个MySQL Docker容器
用户可以构建Docker映像,也可以从Docker Hub提取现有的Docker映像(例如MySQL)。
现在,Docker 从现有的Docker镜像创建一个新的容器 MySQL。同时,读写文件系统的容器层也创建在映像层的顶部。
- 创建Docker容器的命令: Docker run -t –i MySQL
- 列出正在运行的容器的命令: Docker ps
71.注册表和存储库之间有什么区别?
登记处 | 资料库 |
---|---|
Docker注册表是用于托管和分发Docker映像的开源服务器端服务 | 该存储库是多个版本的Docker映像的集合 |
在注册表中,用户可以区分具有其标记名的Docker映像 | 它存储在Docker注册表中 |
Docker也有自己的默认注册表称为Docker Hub | 它有两种类型:公共存储库和私有存储库 |
72.什么是支持Docker的云平台?
以下是Docker运行的云平台:
- 亚马逊网络服务
- 微软Azure
- Google Cloud Platform
- 机架空间
73.在Docker中公开和发布命令的目的是什么?
暴露
- Expose是Dockerfile中使用的指令。
- 它用于公开Docker网络中的端口。
- 这是在构建映像和运行容器时使用的记录说明。
- Expose是Docker中使用的命令。
- 示例: 暴露8080
发布
- 发布在Docker运行命令中使用。
- 可以在Docker环境之外使用。
- 它用于将主机端口映射到正在运行的容器端口。
- --publish 或 –p 是Docker中使用的命令。
- 示例: docker run –d –p 0.0.0.80:80
现在,让我们看一下DevOps面试问题,以进行持续监控。
持续监控的DevOps面试问题
74. Nagios如何帮助持续监视系统,应用程序和服务?
Nagios启用服务器监视,并具有检查是否充分利用它们或是否需要解决任何任务失败的能力。
- 验证服务器和服务的状态
- 检查基础架构的运行状况
- 检查应用程序是否正常运行以及Web服务器是否可访问
75. Nagios如何帮助持续监视系统,应用程序和服务?
76. Nagios的Nagios远程插件执行器(NPRE)是什么意思?
Nagios远程插件执行器(NPRE)使您可以在Linux / Unix计算机上执行Nagios插件。您可以监视远程计算机指标(磁盘使用情况,CPU负载等)
- 该 check_npre 插件驻留在本地监控机上
- 在远程Linux / Unix计算机上运行的 NPRE守护程序
77. Nagios用于监视目的的端口号是什么?
通常,Nagios使用以下端口号进行监视:
78. Nagios中的主动和被动检查是什么?
Nagios能够通过两种方式监视主机和服务:
积极地
- Nagios流程启动了主动检查
- 定期进行主动检查
被动地
- 通过外部应用程序/过程启动和执行被动检查
- 被动检查结果将提交给Nagios进行处理
79. Nagios中的主动和被动检查是什么?
有效检查:
- Nagios守护程序中的检查逻辑将启动活动检查。
- Nagios将执行一个插件,并传递有关需要检查的信息。
- 然后,该插件将检查主机或服务的运行状态,并将结果报告回Nagios守护程序。
- 它将处理主机或服务检查的结果并发送通知。
被动检查:
- 在被动检查中,外部应用程序检查主机或服务的状态。
- 它将检查结果写入外部命令文件。
- Nagios读取外部命令文件,并将所有被动检查的结果放入队列中,以供以后处理。
- Nagios可能会根据检查结果信息发出通知,日志警报等。
您是否具备足够的技能,可以胜任下一轮DevOps工程师的工作?好吧,尝试回答这些DevOps练习测试问题并找出答案。
80.说明主要配置文件及其在Nagios中的位置。
主要配置文件由几个影响Nagios操作方式的指令组成。Nagios进程和CGI读取配置文件。
主配置文件样本将放置在您的设置 目录中:
/usr/local/Nagios/etc/resource.cfg
81.什么是Nagios网络分析仪?
- 它提供了对所有网络流量源和安全威胁的深入了解。
- 它提供了网络流量和带宽数据的集中视图。
- 它允许系统管理员收集有关网络运行状况的高级信息。
- 它使您能够主动解决故障,异常行为和威胁,避免它们影响关键业务流程。
82.使用Nagios监视HTTP和SSL证书有什么好处?
HTTP证书监控
- 提高服务器,服务和应用程序的可用性。
- 快速检测网络中断和协议故障。
- 启用Web事务和Web服务器性能监视。
SSL证书监控
- 网站可用性提高。
- 频繁的应用程序可用性。
- 它提供了更高的安全性。
83.使用Nagios解释虚拟化。
Nagios可以在不同的虚拟化平台上运行,例如VMware,Microsoft Visual PC,Xen,Amazon EC2等。
- 提供监视不同平台上各种指标的功能
- 确保快速检测服务和应用程序故障
- 能够监视以下指标:
- CPU使用率
- 记忆
- 联网
- 虚拟机状态
- 减少管理费用
84.在Nagios中命名影响递归和继承的三个变量。
name-可以在其他对象定义中引用的模板名称,以便它可以继承对象的属性/变量。
使用-在这里,您指定您要使用的模板对象的名称
想要从中继承属性/变量。
register-此变量指示对象定义是否
应该在Nagios上注册。
定义一些对象类型{
特定于对象的变量…。
名称template_name
使用name_of_template
寄存器[0/1]
}
85.为什么说Nagios是面向对象的?
用对象配置格式,可以创建从其他对象定义继承属性的对象定义。因此,Nagios被称为面向对象。
对象类型:
- 服务
- 主持人
- 指令
- 时间段
86.解释一下纳吉斯州处于何种状态。
- 在Nagios中,状态跟踪用于日志记录目的。
- 为特定主机或服务启用跟踪功能后,Nagios将非常仔细地监视该主机或服务。
- 它将记录在检查结果输出中看到的所有更改。
- 这有助于分析日志文件。