12个基本的Docker面试问题 *
最好的Docker开发人员和工程师可以回答的全部基本问题. 在我们社区的推动下,我们鼓励专家提交问题并提供反馈.
Hire a Top Docker Developer NowInterview Questions
In some projects, 你可以选择私有的Docker注册表,而不是Docker Hub或任何云提供商的注册表. 这可能采取部署Docker注册服务器的形式, 或者像Nexus这样的第三方本地注册服务器.
当您想要连接这些私有注册中心时, 您的注册表应该按照最佳实践使用SSL证书进行保护.
如果希望使用自签名SSL证书,还可以选择不安全地使用私有注册表(注意), 这应该只用于测试目的. 的值,将您的私有测试注册表添加到数组中 "insecure-registries"
key in your daemon.json
config file.
Docker镜像可以通过 docker save
command. For example:
docker save -o .tar
导出的Docker镜像可以通过 docker load
command:
docker load -i .tar
注意,这不会从基于映像的任何容器导出数据, just the image itself.
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
当您必须管理大型动态环境时 docker
command alone does not suffice. 在自动化容器的伸缩和运行状况检查时,您将面临许多问题. 在这种情况下,软件团队使用像Kubernetes这样的容器编排工具. 这样的软件实现了另一个层次的自动化:
- 轻松、安全且具有高可用性地部署或扩展容器
- 从容器组提供服务(内部或外部)
- 当出现特定于主机的问题时,将容器从一台主机移到另一台主机
- 像管理环境变量一样轻松地管理配置数据
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守护进程将尝试在以下情况下重启容器:
- Any problem exists,
- You stop them manually, or
- docker守护进程本身已停止并重新启动
The fourth policy is unless-stopped
,其中Docker守护进程将始终尝试重新启动容器,除非您手动停止它们.
Running运行是容器的主要状态. 这意味着它已经启动,并且容器本身没有检测到任何问题.
Paused:如果你暂时停止运行Docker容器通过 docker pause
,这是您将看到的,直到您取消暂停.
Exited:如果您的容器因问题而停止,或者您手动停止了容器, 您将看到处于这种状态的容器, 取决于您的重启策略,如上所述.
A Docker image consists of many layers. 每一层对应于图像Dockerfile中的一个命令. 当您将Docker映像作为容器运行时,该映像为应用程序提供隔离.
您可以从单个Docker映像运行多个容器. Docker镜像可以从Dockerfile中构建.
Docker镜像注册表是Docker镜像的存储区域. 你可以从中获取图像,而不是构建图像.
映像注册表可以是公共的,也可以是私有的. 最著名的公共注册中心是Docker Hub.
Docker企业版提供经过认证的Docker镜像和插件. With this certification, Docker Inc. 确保相关映像通过安全性和最佳实践检查. 换句话说,它们保证了一定的可靠性基线.
Docker企业版还提供了Active Directory或LDAP用户集成, 持续的漏洞和安全扫描, 以及容器应用程序和图像管理功能.
Docker Swarm是一个开源的容器编排工具,它集成了Docker引擎和CLI. 如果你想使用Docker Swarm,你应该使用 overlay
network driver. 使用覆盖网络通过将多个docker主机守护进程连接在一起来启用Swarm服务.
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
Docker Compose是一个工具,它可以让你通过一个YAML或JSON文件定义多个容器及其配置.
Docker Compose最常见的用途是当应用程序有一个或多个依赖项时.g., MySQL or Redis. Normally, during development, 这些依赖项是在本地安装的——当迁移到生产环境时,需要重新执行这个步骤. 你可以通过使用Docker Compose来避免这些安装和配置部分.
一旦设置好,你就可以用一个工具启动并运行所有这些容器/依赖项 docker-compose up
command.
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, 您可以使用相同的命令使用在前一个容器中生成的相同数据.
使用像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 DeveloperJob Opportunities From Our Network
Submit an interview question
提交的问题和答案将被审查和编辑, 并可能会或可能不会选择张贴, at the sole discretion of Toptal, LLC.
Looking for Docker Developers?
Looking for Docker Developers? Check out Toptal’s Docker developers.
Brian Lenoski
Freelance Docker Developer
Brian有10年开发跨网络软件的经验, mobile, and desktop platforms, 包括作为开发团队的一员,将公共交通引入苹果地图. Brian善于沟通,在各种规模的团队中都有过工作经验.
Show MoreDavid Pfeffer
Freelance Docker Developer
David是一名软件工程师,也是霍博肯史蒂文斯理工学院的兼职计算机科学教授, NJ. 他们参与了许多初创企业,并在金融服务部门从事高带宽/高交易计算工作. They're an expert in C#/.. NET和TypeScript,从最初的测试版开始就使用了,他们经常使用 .NET Core and Node.在后端使用React、Angular、Cordova和Ionic.
Show MoreToptal Connects the Top 3% of Freelance Talent All Over The World.
Join the Toptal community.