Stephen主梁

在申请下一份工作时,软件工程师需要准备好回答Docker面试的问题。为什么?Docker的使用近年来呈指数级增长被命名为第三个最常用的平台在2019年的一项调查中,Linux和Windows之后。

Docker是一个庞大的生态系统,其中包含许多工具、关键字和需要了解的主题。为了帮助你在招聘经理面前充分利用时间,以下是20多个最常见的Docker关系问题和答案,供你下次面试时参考。

问:Docker CLI和Docker守护进程有什么区别?

Docker CLI(命令行界面)和Docker守护进程经常混淆。守护进程是执行繁重任务的程序,充当代表服务器的Docker引擎。守护进程构建映像并管理创建的容器。

CLI是与守护进程交互的Docker客户端。CLI接收命令并将其馈送到守护进程中。

Docker和Kubernetes:完整指南

最后更新日期:2021年10月

畅销书
  • 332课
  • 所有级别
4.7 (43,271)

使用Kubernetes构建、测试和部署Docker应用程序,同时学习生产风格的开发流程|betwayapp下载安装斯蒂芬·主梁

探索课程

问:Docker CLI中最重要的命令是什么?

最重要的命令是您一直使用的命令,因此请列出您每天使用的命令。

问:在容器中运行数据库有哪些注意事项?

请记住,Docker容器本质上是短暂的。当容器被移除时,您将永远丢失其中的数据。

如果要在容器中运行数据库,则需要数据持久性策略。这通常是通过在容器中装入一个卷来完成的。然后,数据库可以将其数据存储在此卷中。如果容器被删除,数据将通过卷持久化。然后,我们可以创建一个新容器,并将相同的卷装载到该容器中以重用该数据。

问:创建Docker映像的最佳方法是什么?

始终使用Dockerfile创建Docker图像。DockerFile是文本文档,指定守护进程创建映像时应使用的一系列清晰步骤。其他工程师很容易阅读和更改它们。

不要通过制作容器、手动更改然后运行“docker提交”来创建图像。这可能会产生一个图像,但对其他工程师来说,再现图像将是一个挑战。

问:如何调试正在运行的容器?

有一些方法可以用来调试正在运行的容器:

问:Dockerfiles是用JSON还是YAML语法编写的?

技巧的问题!Dockerfile的容器既不是JSON也不是YAML。该语法只在docker-compose文件中使用。

Dockerfile中使用的语法没有设置名称。你应该说Dockerfiles包含一系列Docker命令。

问题:容器是否可以完全访问其主机操作系统?

Docker容器默认与主机操作系统隔离。容器可以通过设置“特权”标志来访问主机操作系统。当你创建一个带有“特权”标志的容器时,它将拥有对主机操作系统的完全访问权。

问题:为什么要运行带有“特权”标志的容器?

运行带有“特权”标志的Docker容器有几个理由。最常见的原因是,您希望容器能够自己创建容器。

问:CLI命令“stop”和“kill”有什么区别?

“停止”命令向主进程发送“SIGTERM”信号。Docker然后等待进程退出。如果进程未退出,Docker将在10秒后发送“SIGKILL”信号。

“kill”命令立即向主进程发送一个“SIGKILL”信号。

问:“attach”和“exec”命令有什么区别?

使用' exec '命令在容器内部运行命令。您运行的命令可以在容器中启动一个新进程。

' attach '命令与主进程的流进行交互。特别是,它将与STDOUT、STDERR和STDIN流交互。

总之:当您想在容器中运行新命令时,请使用“exec”。使用“attach”命令与主进程交互。

问:' diff '命令用于什么?

' diff '命令列出容器内所有更改过的文件。这将只列出自创建容器以来所做的更改。

问:所有项目都需要使用Docker Hub吗?

不,并不是所有项目都需要Docker Hub。我们只使用Docker Hub,如果我们需要使用托管在那里的图像。

如果我们想避免使用Docker Hub,我们可以从头开始构建每个映像。

问:如何约束容器可以使用的资源?

你可以通过在' docker run '命令中添加一些选项来限制容器使用的资源。

问:Docker容器和虚拟机是一回事吗?

不,Docker容器并不等同于虚拟机。Docker容器是一个或一组沙箱化的进程,限制了对主机文件系统的访问。但是,虚拟机是由hypervisor管理的。

问:你用Docker CLI创建的所有图像都会自动发布到一个公共注册中心,比如Docker Hub吗?

不,您构建的图像不会自动推送到公共注册中心。构建的映像仅在构建它们的机器上可用。要使该映像在其他地方可用,必须手动将其推入公共注册中心。

问题:在应用程序开发过程中使用Docker有哪些优点和缺点?betwayapp下载安装

优点

缺点

问题:在构建新映像时,如何让Docker CLI忽略目录中的所有文件?

创建一个”。dockerignore”文件。该文件遵循与'相同的规则。gitignore”文件。在”。dockerignore '文件,你会列出每个Docker应该忽略的文件和文件夹,当构建一个新映像。

问:为什么要Docker在构建映像时忽略目录?

Docker在构建映像时应负责安装所有相关依赖项。如果您给Docker一份依赖项的副本,它们将在映像构建期间被覆盖。通过忽略依赖关系,它确保了构建时间的加快。

问题:“创建”、“开始”和“运行”命令之间有什么区别?

问:当容器的主要进程崩溃时会发生什么?

它取决于生成容器时分配给容器的重新启动策略。

问:Docker映像是如何创建的?

有两种方法可以创建Docker映像。

1.你可以使用Dockerfile命令' docker build '来创建镜像

2.镜像也可以通过在容器上运行' docker commit '命令来创建

问:什么是图像中的“图层”?

Docker映像由许多层构建而成。每一层表示一组对文件系统的更改。

创建Docker映像时,它以一个空文件系统开始。当Dockerfile的每个步骤运行时,另一层会添加到图像中。

问:两个正在运行的容器可以共享同一个映像层吗?

是的!当你创建一个容器时,Docker会向底层图像添加一个新层。对容器文件系统所做的任何更改都将写入这一层。

属于底层图像的层永远不会改变。Docker将在基于该映像运行的每个容器之间共享它们。

这些原始层中的文件只能通过读操作访问。您不能通过容器对它们进行写入。

问:使用Docker CLI运行单个容器很容易。管理多个集装箱更具挑战性。什么术语指的是管理多个集装箱的过程?另外,有什么工具可以管理许多容器?

管理多个容器称为“编排”。

有两种常用的容器“编排”工具:

  1. Docker Swarm, Docker官方解决方案。
  2. Kubernetes,一个流行的开源解决方案,首先由谷歌推出。

这些工具中的每一个都创建容器并管理它们的生命周期。它们还用于处理不同容器之间的网络连接。

问:假设您创建了一个1GB大小的映像。然后从这个映像创建五个独立的容器。在每个映像中,创建一个大小为200MB的文件。整个操作使用了多少磁盘空间?

从映像创建的每个容器使用的磁盘空间可以忽略不计。制作一组五个容器并不会消耗大量的空间。但是,每个容器中生成的每个200MB文件消耗的都是200MB。

整个操作使用1GB的原始图像,然后每个容器使用5 * 200MB,最终总共使用2GB。

从图像创建容器不会复制基础图像的层。

问:监视运行中的容器最简单的方法是什么?

监视容器最简单的方法是使用' docker ps '命令。这将打印出所有正在运行的容器的状态。

使用' docker attach '命令也很容易监视容器。这将打印容器中的日志,显示主进程的STDOUT和STDERR流。

通过STDOUT和STDERR发出的所有过去的日志都可以使用' docker logs '命令打印出来。这对于查看容器过去做了什么很有用。

问:列出Dockerfile中出现的一些不同命令。每条命令的目的是什么?

Dockerfiles包含许多不同的命令。

最后更新的网页:2020年4月

Docker的顶级课程

物联网和DevOps与Docker
德里克·摩根
4.8 (38)
Docker -为Java开发人员准备的工具
Richard Chesterwood,虚拟配对程序员
4.8 (1866)
面向Java开发人员的Docker
约翰•汤普森
4.4 (2,572)
初学者实用Docker指南
软件工程师,MBA,博士,CCIE
4.8 (272)
Docker精通:Kubernetes +来自Docker船长的蜂群
布雷特·费舍尔,码头工人船长计划
4.7 (50763)
畅销书
Docker和Kubernetes:完整指南
Stephen主梁
4.7 (43,271)
畅销书
Docker for the Absolute初学者- Hands - On - DevOps
Mumshad Mannambeth, KodeKloud Training
4.7 (28443)
畅销书
使用Python&Django-Advanced构建后端restapi
马克·温特巴顿,布鲁克·卢瑟福
4.5 (4570)
畅销书
Devops基础-使用AWS +Docker+Ansible+Jenkins的CI/CD
拉胡尔谢蒂
4.5 (2334)
畅销书
Docker船长提供的Node.js项目的Docker
布雷特·费舍尔,码头工人船长计划
4.6 (1,132)
Docker - SWARM - hands - DevOps
Mumshad Mannambeth, KodeKloud Training
4.6 (1823)

更多的码头工人的课程

Docker的学生也在学习

让你的团队。领导行业。

通过Udemy for Business订阅您组织的在线课程和数字学习工具图书馆。

请求一个演示

斯蒂芬·格里德的课程

现代人会用Redux进行反应
Stephen主梁
4.7 (71272)
畅销书
高级React和Redux
Stephen主梁
4.6 (10,143)
流星和反应的实时应用程序
Stephen主梁
4.4 (1947)
畅销书
ES6JavaScript:完整的开发人员指南
Stephen主梁
4.6 (10,468)
完整的长生不老药和凤凰训练营
Stephen主梁
4.5 (6,009)
畅销书
Complete React Native + Hooks教程
Stephen主梁
4.6 (38,917)
畅销书
完整的MongoDB开发者指南
Stephen主梁
4.6 (6,660)
Webpack 2:完整的开发者指南
Stephen主梁
4.5 (5016)
GraphQL with React:完整的开发者指南
Stephen主梁
4.6 (8,271)
畅销书
React Native:高级概念
Stephen主梁
4.5 (4918)

斯蒂芬·格里德的课程