12个基本的Docker面试问题 *

最好的Docker开发人员和工程师可以回答的全部基本问题. 在我们社区的推动下,我们鼓励专家提交问题并提供反馈.

Hire a Top Docker Developer Now
Toptal logo是顶级自由软件开发人员的专属网络吗, designers, finance experts, product managers, and project managers in the world. 顶级公司雇佣Toptal自由职业者来完成他们最重要的项目.

Interview Questions

1.

使用不安全的Docker镜像注册表的可能方法是什么?

View answer

In some projects, 你可以选择私有的Docker注册表,而不是Docker Hub或任何云提供商的注册表. 这可能采取部署Docker注册服务器的形式, 或者像Nexus这样的第三方本地注册服务器.

当您想要连接这些私有注册中心时, 您的注册表应该按照最佳实践使用SSL证书进行保护.

如果希望使用自签名SSL证书,还可以选择不安全地使用私有注册表(注意), 这应该只用于测试目的. 的值,将您的私有测试注册表添加到数组中 "insecure-registries" key in your daemon.json config file.

2.

What is the use of the docker save and docker load commands?

View answer

Docker镜像可以通过 docker save command. For example:

docker save -o .tar 

导出的Docker镜像可以通过 docker load command:

docker load -i .tar

注意,这不会从基于映像的任何容器导出数据, just the image itself.

3.

什么是默认的Docker网络驱动程序,以及如何在运行Docker镜像时更改它?

View answer

Docker提供了不同的网络驱动程序,比如 bridge, host, overlay, and macvlan. bridge is the default.

有时,您可能希望使用Docker Swarm或将容器直接连接到主机网络. 在这些情况下,您需要更改默认的网络驱动程序.

方法创建一个带有新网络驱动程序的新网络 --driver or -d parameter with your docker network create command. 然后,您需要运行Docker映像 --network 参数以使用新创建的网络.

申请加入Toptal的发展网络

and enjoy reliable, steady, remote Freelance Docker Developer Jobs

Apply as a Freelancer
4.

什么是容器编排?我们为什么要使用它?

View answer

当您必须管理大型动态环境时 docker command alone does not suffice. 在自动化容器的伸缩和运行状况检查时,您将面临许多问题. 在这种情况下,软件团队使用像Kubernetes这样的容器编排工具. 这样的软件实现了另一个层次的自动化:

  • 轻松、安全且具有高可用性地部署或扩展容器
  • 从容器组提供服务(内部或外部)
  • 当出现特定于主机的问题时,将容器从一台主机移到另一台主机
  • 像管理环境变量一样轻松地管理配置数据
5.

Docker容器的可能状态是什么,它们是什么意思?

View answer

Created如果你的docker容器是新创建的,你会看到这个状态. 在此状态下,容器尚未启动.

Restarting当你重新启动你的docker容器——或者容器因为一个问题而重新启动自己——你会看到这个状态.

Docker有四种不同的重启策略. The default is called no. With this policy, Docker守护进程永远不会尝试重新启动您的容器(除非您手动告诉它).)

The second policy is on-failure. With this policy, 如果存在任何问题,Docker守护进程将尝试重新启动容器, that is, 如果任何启动脚本返回非零退出码.

The third policy is always. 使用此策略,Docker守护进程将尝试在以下情况下重启容器:

  1. Any problem exists,
  2. You stop them manually, or
  3. docker守护进程本身已停止并重新启动

The fourth policy is unless-stopped,其中Docker守护进程将始终尝试重新启动容器,除非您手动停止它们.

Running运行是容器的主要状态. 这意味着它已经启动,并且容器本身没有检测到任何问题.

Paused:如果你暂时停止运行Docker容器通过 docker pause,这是您将看到的,直到您取消暂停.

Exited:如果您的容器因问题而停止,或者您手动停止了容器, 您将看到处于这种状态的容器, 取决于您的重启策略,如上所述.

6.

What is a Docker image? What is a Docker image registry?

View answer

A Docker image consists of many layers. 每一层对应于图像Dockerfile中的一个命令. 当您将Docker映像作为容器运行时,该映像为应用程序提供隔离.

您可以从单个Docker映像运行多个容器. Docker镜像可以从Dockerfile中构建.

Docker镜像注册表是Docker镜像的存储区域. 你可以从中获取图像,而不是构建图像.

映像注册表可以是公共的,也可以是私有的. 最著名的公共注册中心是Docker Hub.

7.

Docker企业版提供了哪些特性而不是Docker社区版?

View answer

Docker企业版提供经过认证的Docker镜像和插件. With this certification, Docker Inc. 确保相关映像通过安全性和最佳实践检查. 换句话说,它们保证了一定的可靠性基线.

Docker企业版还提供了Active Directory或LDAP用户集成, 持续的漏洞和安全扫描, 以及容器应用程序和图像管理功能.

8.

什么是Docker Swarm,应该使用哪个网络驱动程序?

View answer

Docker Swarm是一个开源的容器编排工具,它集成了Docker引擎和CLI. 如果你想使用Docker Swarm,你应该使用 overlay network driver. 使用覆盖网络通过将多个docker主机守护进程连接在一起来启用Swarm服务.

9.

用这个有什么问题吗 latest 标记在容器编排环境中? 什么被认为是图像标记的最佳实践?

View answer

If you’re running your image via the latest 在Kubernetes这样的容器编排环境中,它可能会导致问题.

问题是,如果你只使用 latest 标记,您将丢失旧映像,部署将使用新映像. 如果新映像有任何问题,部署可能会失败,从而导致停机.

当您使用显式的版本号来标记Docker映像时, you can roll back to old images easily. Also, 当您将新映像推送到您的私有注册表时, 由于您的标记,您的部署将继续使用旧的版本号,直到您准备好切换它们.

Docker映像标记的最佳实践是同时使用这两种类型的标记. First, tag your Docker images with latest 和一个版本号,然后分别为每个标签推送两次. For example:

docker tag nginx:latest nginx:0.0.1

docker push nginx:latest
docker push nginx:0.0.1
10.

What is Docker Compose? What can it be used for?

View answer

Docker Compose是一个工具,它可以让你通过一个YAML或JSON文件定义多个容器及其配置.

Docker Compose最常见的用途是当应用程序有一个或多个依赖项时.g., MySQL or Redis. Normally, during development, 这些依赖项是在本地安装的——当迁移到生产环境时,需要重新执行这个步骤. 你可以通过使用Docker Compose来避免这些安装和配置部分.

一旦设置好,你就可以用一个工具启动并运行所有这些容器/依赖项 docker-compose up command.

11.

体积参数在a中有什么作用 docker run command?

View answer

volume参数用于将容器中的目录与主机目录同步.

For example:

运行-v nginx-sites:/etc/nginx/sites-available nginx

This command mounts the nginx-sites directory in the host to the /etc/nginx/sites-available directory. 通过这种方式,您可以同步nginx站点,而无需重新启动它们所在的容器. 此外,您可以使用主机中的目录保护容器中生成的数据. Otherwise, if you delete your container, 生成并存储在容器中的数据自然会被删除.

When you use the volume parameter, 您可以使用相同的命令使用在前一个容器中生成的相同数据.

12.

Docker和标准hypervisor虚拟化方法的主要区别是什么?

View answer

使用像vSphere这样的管理程序的标准虚拟化, 每个应用程序都需要一个操作系统. 主机操作系统位于基础结构的底部, 并且必须在您的主机操作系统上安装管理程序. 然后,在虚拟机监控程序之上,为每个应用程序安装操作系统.

With Docker, Docker守护进程位于主机操作系统和Docker镜像之间, in place of a hypervisor. Docker镜像重用主机操作系统的一部分——因此每个应用程序都不需要单独的操作系统——但是您的应用程序仍然是隔离的,就像使用标准管理程序一样.

面试不仅仅是棘手的技术问题, 所以这些只是作为一个指南. 并不是每一个值得雇佣的“A”候选人都能回答所有的问题, 回答所有问题也不能保证成为A级考生. At the end of the day, 招聘仍然是一门艺术,一门科学,需要大量的工作.

Why Toptal

Tired of interviewing candidates? 不知道该问什么才能让你得到一份好工作?

让Toptal为你找到最合适的人.

Hire a Top Docker Developer Now

我们的独家网络Docker开发人员

希望找到一份Docker开发人员的工作?

Let Toptal find the right job for you.

Apply as a Docker Developer

Job Opportunities From Our Network

Submit an interview question

提交的问题和答案将被审查和编辑, 并可能会或可能不会选择张贴, at the sole discretion of Toptal, LLC.

* All fields are required

Looking for Docker Developers?

Looking for Docker Developers? Check out Toptal’s Docker developers.

Bogdan Baba

Freelance Docker Developer

United StatesToptal Member Since May 10, 2021

Bogdan是一名高级Linux系统管理员, DevOps engineer, 15年以上经验的IT部门负责人. He specializes in storage, servers, Puppet, Terraform, Kubernetes, Docker, Linux, and AWS, and he has worked in the apparel, fashion, and cryptocurrency industries.

Show More

Victor Barba Martin

Freelance Docker Developer

SpainToptal Member Since March 16, 2021

Victor在DevOps领域拥有丰富的经验, 构建AWS解决方案并利用CloudFormation等工具, EC2, ECS, Lambda, VPC, and S3, among others. 他擅长处理治理和管理工具(组织), CloudTrail, 和配置)和开发人员工具(CodeBuild, CodePipeline, and CodeDeploy). Victor已经成功地将工作负载迁移到容器, set up CI /CD pipelines, 并建立了Slackbot用于部署和动态创建开发环境.

Show More

Clark Winters

Freelance Docker Developer

United StatesToptal Member Since December 14, 2023

Clark是一位经验丰富的DevOps工程师,在系统集成和编程方面有很强的背景. He has expertise in web, cloud, 数据库生态系统,以及对Go编程语言和Terraform和Docker等工具的亲和力. Clark帮助客户构建可扩展的云基础设施, web services, REST APIs, and automation scripts, prioritizing efficient, 量身定制的解决方案,承诺按时交付和快速适应新项目.

Show More

Toptal Connects the Top 3% of Freelance Talent All Over The World.

Join the Toptal community.

Learn more