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