Docker 是一种流行的开源软件平台,可简化创建、管理、运行和分发应用程序的过程。它使用容器来打包应用程序及其依赖项。Docker 主导了市场。大多数顶级云和 IT 公司都采用 Docker 来简化其应用程序开发工作流程。对具有 Docker 经验的申请人的需求很高。
破解 Docker 面试是获得这些令人垂涎的角色之一的关键。我们收集了 40 大 Docker 面试问题,以帮助您准备 Docker 面试。这个 Docker 教程包括问题和答案。让我们开始吧!
Docker 面试问答
- 什么是 Docker 容器?
Docker 容器在应用程序层创建抽象并将应用程序及其所有依赖项打包在一起。这使我们能够快速可靠地部署应用程序。容器不需要我们安装不同的操作系统。相反,它们使用底层系统的 CPU 和内存来执行任务。这意味着任何容器化应用程序都可以在任何平台上运行,而不管底层操作系统如何。我们也可以将容器视为 Docker 镜像的运行时实例。
- 什么是 DockerFile?
Dockerfile 是一个文本文件,其中包含我们需要运行以构建 Docker 映像的所有命令。Docker 使用 Dockerfile 中的指令自动构建镜像。我们可以docker build用来创建按顺序执行多个命令行指令的自动构建。
- 如何从 Docker 镜像创建 Docker 容器?
为了从镜像创建容器,我们从 Docker 存储库中提取我们想要的镜像并创建一个容器。我们可以使用以下命令:
1
$ docker run -it -d <image_name>
- Docker Compose 可以使用 JSON 代替 YAML 吗?
是的,我们可以对Docker Compose文件使用 JSON 文件而不是YAML
$ docker-compose -f docker-compose.json up
- 什么是Docker Swarm?
Docker Swarm 是一个容器编排工具,它允许我们跨不同主机管理多个容器。使用 Swarm,我们可以将多个 Docker 主机变成单个主机,以便于监控和管理。
- 如果你想使用一个基础镜像并对其进行修改,你怎么做?
我们可以使用以下 Docker 命令将图像从 Docker Hub 拉到我们的本地系统上:
$ docker pull <image_name>
- 如何启动、停止和终止容器?
要启动 Docker 容器,请使用以下命令:
$ docker start <container_id>
要停止 Docker 容器,请使用以下命令:
$ docker stop <container_id>
要终止 Docker 容器,请使用以下命令:
$ docker kill <container_id>
- 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
机架空间
提示:我们始终建议您在面试之前进行一些公司研究。要为这个特定问题做准备,请了解公司如何使用 Docker 并在您的答案中包含他们使用的平台。
- 解释 Docker 组件。
三个架构组件包括 Docker 客户端、主机和注册表。
Docker 客户端:该组件执行构建和运行操作以与 Docker 主机通信。
Docker 主机:该组件包含 Docker 守护程序、Docker 镜像和 Docker 容器。守护进程建立到 Docker Registry 的连接。
Docker Registry:该组件存储 Docker 镜像。它可以是公共注册表,例如 Docker Hub 或 Docker Cloud,也可以是私有注册表。
- 虚拟化和容器化有什么区别?
虚拟化
虚拟化帮助我们在单个物理服务器上运行和托管多个操作系统。在虚拟化中,管理程序为客户操作系统提供了一个虚拟机。VM 形成了硬件层的抽象,因此主机上的每个 VM 都可以充当物理机。
容器化
容器化为我们提供了一个独立的环境来运行我们的应用程序。我们可以在单个服务器或 VM 上使用相同的操作系统部署多个应用程序。容器构成了应用层的抽象,所以每个容器代表一个不同的应用。
- 管理程序的功能是什么?
管理程序或虚拟机监视器是帮助我们创建和运行虚拟机的软件。它使我们能够使用单个主机来支持多个来宾虚拟机。它通过划分主机的系统资源并将它们分配给已安装的来宾环境来实现这一点。可以在单个主机操作系统上安装多个操作系统。有两种类型的管理程序:
Native:本机管理程序或裸机管理程序,直接在底层主机系统上运行。它使我们可以直接访问主机系统的硬件,并且不需要基本服务器操作系统。
托管:托管管理程序使用底层主机操作系统。
12.如何构建Dockerfile?
为了使用我们概述的规范创建映像,我们需要构建一个 Dockerfile。要构建 Dockerfile,我们可以使用以下docker build命令:
$ docker build
13. 使用什么命令将新镜像推送到 Docker Registry?
要将新镜像推送到 Docker Registry,我们可以使用以下docker push命令:
$ docker push myorg/img
14.什么是Docker引擎?
Docker Engine 是一种开源容器化技术,我们可以使用它来构建和容器化我们的应用程序。Docker Engine 由以下组件支持:
Docker 引擎 REST API
Docker 命令行界面 (CLI)
Docker 守护进程
- 如何访问正在运行的容器?
要访问正在运行的容器,我们可以使用以下命令:
$ docker exec -it <container_id> bash
16.如何列出所有正在运行的容器?
要列出所有正在运行的容器,我们可以使用以下命令:
$ docker ps
- 描述 Docker 容器的生命周期。
Docker 容器经历以下阶段:
创建容器
运行容器
暂停容器(可选)
取消暂停容器(可选)
启动容器
停止容器
重启容器
杀死容器
销毁容器
- 什么是Docker对象标签?
Docker 对象标签是存储为字符串的键值对。它们使我们能够将元数据添加到 Docker 对象,例如容器、网络、本地守护进程、图像、Swarm 节点和服务。
- 使用Docker Compose时如何保证容器1先于容器2运行?
Docker Compose 在继续下一个容器之前不会等待容器准备就绪。为了控制我们的执行顺序,我们可以使用"取决于"条件,depends_on。这是在 docker-compose.yml 文件中使用的示例:
version: "2.4"
services:
backend:
build: .
depends_on:
- db
db:
image: postgres
该docker-compose up命令将按照我们指定的依赖顺序启动和运行服务。
20.docker create命令有什么作用?
该docker create命令在指定映像上创建可写容器层,并准备该映像以运行指定命令。