20大Docker面试问题(附答案
Docker是一个流行的开源软件平台,它简化了创建、管理、运行和分发应用程序的过程。它使用容器将应用程序与它们的依赖关系一起打包。Docker在市场上占据主导地位。大多数顶级云计算和IT公司已经采用Docker来简化他们的应用开发工作流程。对具有Docker经验的申请人的需求很高。
顺利通过Docker面试是获得这些令人垂涎的职位的关键。我们已经收集了前20个Docker面试问题,以帮助你准备Docker面试。这个Docker教程包括问题和答案。让我们开始吧!
我们将涵盖。
- Docker面试问题和答案
- 还有20个面试问题需要探讨
- 接下来的步骤
Docker面试问题和答案
1.什么是Docker容器?
Docker容器在应用层创建了一个抽象,并将应用与所有的依赖关系打包在一起。这使我们能够快速、可靠地部署应用程序。容器不要求我们安装一个不同的操作系统。相反,它们使用底层系统的CPU和内存来执行任务。这意味着,任何容器化的应用程序都可以在任何平台上运行,而不受底层操作系统的影响。我们也可以把容器看作是Docker镜像的运行时实例。
2.什么是Docker文件?
Dockerfile是一个文本文件,它包含了我们在构建Docker镜像时需要运行的所有指令。Docker使用Dockerfile中的指令来自动构建镜像。我们可以使用docker build来创建自动构建,按顺序执行多个命令行指令。
3.如何从Docker镜像中创建一个Docker容器?
为了从镜像中创建一个容器,我们从Docker资源库中拉出我们想要的镜像并创建一个容器。我们可以使用以下命令。
$ docker run -it -d <image_name>
4.Docker Compose可以使用JSON而不是YAML吗?
是的,我们可以用JSON文件代替YAML文件作为Docker Compose文件。要使用JSON,我们需要像这样指定文件名。
$ docker-compose -f docker-compose.json up
5.什么是Docker Swarm?
Docker Swarm是一个容器编排工具,它允许我们在不同的主机上管理多个容器。通过Swarm,我们可以将多个Docker主机变成一个单一的主机,以便于监控和管理。
6.如果你想使用一个基础镜像,并对其进行修改,你如何做到这一点?
我们可以使用下面的Docker命令,从Docker Hub拉一个镜像到我们的本地系统。
$ docker pull <image_name>
7.你如何启动、停止和杀死容器?
要启动一个Docker容器,请使用以下命令。
$ docker start <container_id>
要停止一个Docker容器,请使用下面的命令。
$ docker stop <container_id>
要杀死一个Docker容器,请使用下面的命令。
$ docker kill <container_id>
8.Docker可以在哪些平台上运行?
Docker运行在以下Linux发行版上。
- CentOS 6+
- Gentoo
- ArchLinux
- CRUX 3.0+
- openSUSE 12.3+
- RHEL 6.5+
- Fedora 19/20+
- Ubuntu 12.04, 13.04
Docker也可以在生产中使用这些云服务。
- 微软Azure
- 谷歌计算引擎
- 亚马逊AWS EC2
- 亚马逊AWS ECS
- 洛克菲勒(Rackspace)公司
提示:我们总是建议在面试前进行一些公司研究。为了准备这个特殊的问题,找出公司如何使用Docker,并在你的答案中包括他们使用的平台。
9.解释一下Docker组件。
三个架构组件包括Docker客户端、主机和注册表。
- Docker客户端。这个组件执行构建和运行操作,与Docker主机通信。
- Docker主机。这个组件持有Docker守护程序、Docker镜像和Docker容器。该守护程序设置了与Docker注册中心的连接。
- Docker Registry。这个组件存储Docker镜像。它可以是一个公共注册表,如Docker Hub或Docker Cloud,或一个私人注册表。
10.虚拟化和容器化之间有什么区别?
虚拟化
虚拟化帮助我们在一台物理服务器上运行和托管多个操作系统。在虚拟化中,管理程序给客人操作系统一个虚拟机。虚拟机形成了硬件层的抽象,所以主机上的每个虚拟机都可以作为一个物理机。
容器化
容器化为我们提供了一个隔离的环境来运行我们的应用程序。我们可以在一台服务器或虚拟机上使用同一操作系统部署多个应用程序。容器形成了应用层的抽象,所以每个容器代表了不同的应用。
11.11.管理程序的功能是什么?
管理程序,或称虚拟机监视器,是帮助我们创建和运行虚拟机的软件。它使我们能够使用一台主机来支持多个客户虚拟机。它通过划分主机的系统资源并将其分配给已安装的客户环境来实现这一目的。多个操作系统可以被安装在一个主机操作系统上。有两种虚拟机管理程序。
- 本机。本地管理程序,或称裸机管理程序,直接在底层主机系统上运行。它使我们能够直接访问主机系统的硬件,并且不需要基础服务器操作系统。
- 托管式:托管式管理程序使用底层主机操作系统。
12.你如何建立一个Docker文件?
为了用我们列出的规格创建一个镜像,我们需要建立一个Dockerfile。为了建立一个Dockerfile,我们可以使用docker build命令。
$ docker build <path to dockerfile>
13.你用什么命令来推送一个新的镜像到Docker注册中心?
要推送一个新的镜像到Docker注册中心,我们可以使用docker push命令。
$ docker push myorg/img
14.什么是Docker引擎?
Docker Engine是一种开源的容器化技术,我们可以用它来构建和容器化我们的应用程序。Docker Engine由以下组件支持。
- Docker Engine REST API
- Docker命令行界面(CLI)
- Docker Daemon
15.你如何访问一个正在运行的容器?
要访问一个正在运行的容器,我们可以使用以下命令。
$ docker exec -it <container_id> bash
16.如何列出所有正在运行的容器?
要列出所有运行中的容器,我们可以使用下面的命令。
$ docker ps
17.描述一下Docker容器的生命周期。
Docker容器会经历以下几个阶段。
- 创建一个容器
- 运行该容器
- 暂停容器(可选)
- 解除容器的暂停(可选
- 启动容器
- 停止容器
- 重新启动容器
- 杀死容器
- 销毁容器
18.什么是Docker对象标签?
Docker对象标签是以字符串形式存储的键-值对。它们使我们能够向Docker对象添加元数据,如容器、网络、本地守护程序、图像、Swarm节点和服务。
19.在使用Docker Compose时,你如何确保容器1在容器2之前运行?
Docker Compose不会等待容器准备好后再进行下一个容器的运行。为了控制我们的执行顺序,我们可以使用 "依赖 "条件, depends_on。下面是一个在docker-compose.yml文件中使用它的例子。
version: "2.4"
docker-compose up命令将按照我们指定的依赖顺序启动和运行服务。
20.docker create命令是做什么的?
docker create命令在一个指定的镜像上创建一个可写的容器层,并为运行指定的命令准备该镜像。
还有20个面试问题需要探讨
- 21.解释一下Docker架构。
- 22.CMD和ENTRYPOINT之间有什么区别?
- 23.Docker运行命令中的volume参数的作用是什么?
- 24.在Docker上运行有状态的应用程序是一种好的做法吗?
- 25.什么是Docker命名空间?
- 26.解释Docker中持续集成和持续部署的实现方法。
- 27.停止和重启Docker容器的过程是什么?
- 28.如何给你的Docker镜像取一个镜像名称?
- 29.docker service命令是做什么的?
- 30.容器退出时,你会丢失数据吗?
- 31.Jenkins和Docker是如何一起工作的?
- 32.Docker容器能扩展到什么程度?
- 33.描述守护程序日志和容器日志之间的区别。
- 34.解释Docker compose的up、run和start命令的目的。
- 35.Docker卷存储在哪里?
- 36.解释Docker镜像和层之间的区别。
- 37.暂停的容器可以从Docker中删除吗?
- 38.如何使用docker save和docker load命令?
- 39.默认的Docker网络驱动是什么?在运行Docker镜像时,你如何改变它?
- 40.docker system prune命令的作用是什么?
接下来的步骤
祝贺你!你已经走到了最后。准备Docker面试需要时间,所以对这个过程要有耐心。准备好花大量的时间学习和准备。还有更多关于Docker的知识需要学习。接下来要讲的一些推荐主题包括
- Docker与常见的开发配置文件
- Docker的安全性
- 私人注册中心
学习愉快!
20个Docker面试问题(含答案)最初发表于Dev Geniuson Medium,人们通过强调和回应这个故事来继续对话。