43+ Docker 面试题及答案(2025)

以下是为初学者和有经验的 DevOps 工程师经常问到的 Docker 工作面试问题。

 

Docker 面试题及答案(面向初学者)

1. 什么是 Docker?

Docker 是一种开源的轻量级容器化技术。它在云计算和应用程序打包领域已获得广泛的认可。它允许您将应用程序自动化部署到轻量级且可移植的容器中。


2. 使用 Docker 容器有什么优点?

以下是使用 Docker 的主要优势。

  • 提供高效便捷的初始设置
  • 允许您详细描述应用程序生命周期
  • 简单的配置,并与 Docker Compose 交互。
  • 文档提供了所有详细信息。

3. Docker 的重要特性是什么?

以下是 Docker 的基本特性

  • 易于建模
  • 版本控制
  • 放置/亲和性
  • 应用程序敏捷性
  • 开发人员生产力
  • 运营效率

4. Docker 的主要缺点是什么?

Docker 的一些显著缺点包括

  • 不提供存储选项
  • 提供较差的监控选项。
  • 没有不活动节点的自动重新调度
  • 复杂的自动水平扩展设置

5. 什么是 Docker 镜像?

Docker 镜像用于创建 Docker 容器。您可以使用 build 命令创建 Docker 镜像。因此,它会创建一个在开始运行时启动的容器。所有 Docker 镜像都存储在 Docker 仓库中。


6. 什么是 Docker Engine?

Docker 守护进程或 Docker Engine 代表服务器。Docker 守护进程和客户端应运行在同一台或远程主机上,它们可以通过命令行客户端二进制文件和完整的 RESTful API 进行通信。


7. 解释仓库 (Registries)

有两种类型的仓库

  • 公共仓库
  • 私有仓库

Docker 的公共仓库称为 Docker Hub,它允许您私有存储镜像。在 Docker Hub 中,您可以存储数百万个镜像。


8. 应该运行什么命令来查看 Docker 中所有正在运行的容器?

$ docker ps

9. 编写命令来停止 Docker 容器

$ sudo docker stop container name

10. 运行镜像作为容器的命令是什么?

$ sudo docker run -i -t alpine /bin/bash

Docker 面试题(面向有经验者)

11. Dockerfile 中有哪些常用指令?

Dockerfile 中的常用指令是:FROM, LABEL, RUN, 和 CMD。


12. 什么是 memory-swap 标志?

Memory-swap 是一个修改标志,仅当也设置了 `-memory` 时才有意义。Swap 允许容器在用尽所有可用 RAM 后将内存需求写入磁盘。


13. 解释 Docker Swarm?

Docker Swarm 是 Docker 的原生集群,它帮助您将一组 Docker 主机分组为单个虚拟 Docker 主机。它提供了标准的 Docker 应用程序编程接口。


14. 如何监控生产环境中的 Docker?

Docker 状态和 Docker 事件用于监控生产环境中的 Docker。


15. Docker 容器有哪些状态?

Docker 容器的重要状态包括

  • 运行中
  • 已暂停
  • 正在重启
  • 已退出

16. 什么是 Docker Hub?

Docker Hub 是一个基于云的仓库,它帮助您链接代码仓库。它允许您在 Docker Cloud 中构建、测试、存储镜像。您还可以通过 Docker Hub 将镜像部署到您的主机。


17. 什么是虚拟化?

虚拟化是一种逻辑划分大型机的方法,允许多个应用程序同时运行。

然而,当公司和开源社区能够提供处理特权指令的方法时,这种情况发生了变化。它允许多个操作系统在单个 x86 系统上同时运行。


18. 什么是 Hypervisor?

Hypervisor 允许您创建一个虚拟机运行客户机虚拟机的虚拟环境。它控制客户机系统并根据需要检查资源是否已分配给客户机。

Virtualization in Docker vs Hypervisor

Docker 中的虚拟化与 Hypervisor


19. 解释 Docker 对象标签

Docker 对象标签是一种将元数据应用于 Docker 对象(包括镜像、容器、卷、网络、Swarm 节点和服务)的方法。


20. 编写一个 Dockerfile 来创建和复制目录,并使用 Python 模块进行构建?

FROM pyhton:2.7-slim

WORKDIR /app

COPY . /app

docker build –tag

21. Docker 卷存储在哪里?

您需要导航到

 /var/lib/docker/volumes

22. 列出一些重要的 Docker 高级命令

命令 描述
docker info 信息命令
docker pull 下载镜像
docker stats 容器信息
Docker images 已下载镜像列表

23. Docker 客户端和 Docker 守护进程之间如何通信?

您可以通过 Rest API、socket.IO 和 TCP 的组合来与 Docker 守护进程进行通信。


24. 解释 Docker 中持续集成 (CI) 和持续部署 (CD) 的实现方法?

您需要执行以下操作

  • 在 Docker 上运行 Jenkins
  • 您可以使用 docker-compose 在 Jenkins 中运行集成测试

25. 控制 Docker 的 Systemd 命令是什么?

systemctl start/stop docker
service docker start/stop

如何使用 JSON 而不是 YAML compose 文件?

docker-compose -f docker-compose.json up

将新镜像推送到 Docker 仓库需要什么命令?

docker push myorg/img

如何使用 copy/add 或 volumes 包含代码?

在 Dockerfile 中,我们需要使用 COPY 或 ADD 指令。这对于重新定位代码很有用。但是,如果我们想进行更改,应该使用卷。


29. 解释 Docker 容器的扩展过程

Docker 容器可以扩展到任何级别,从几百个到数千甚至数百万个容器。唯一的条件是容器需要始终拥有内存和操作系统,并且 Docker 扩展时不能有任何限制。


30. 创建 Docker 容器的方法是什么?

您可以使用任何特定的 Docker 镜像,通过以下命令创建 Docker 容器。

docker run -t -i command name

此命令不仅会创建容器,还会为您启动它。


Docker 面试题(面向有 5 年经验者)

31. Docker 容器生命周期的步骤是什么?

以下是 Docker 生命周期的步骤

  • 构建
  • 拉取
  • 运行

32. 如何使用单个服务运行多个容器?

通过使用 docker-compose,您可以使用单个服务运行多个容器。所有 docker-compose 文件都使用 yaml 语言。


33. 什么是 CNM?

CNM 代表 Container Networking Model (容器网络模型)。它是 Docker, Inc. 的标准或规范,构成了 Docker 环境中容器网络的基础。这种 Docker 的方法通过支持多种网络驱动程序为容器网络提供支持。


34. Docker 是否支持 IPV6?

是的,Docker 支持 IPv6。IPv6 网络仅支持运行在 Linux 主机上的 Docker 守护进程。但是,如果您想在 Docker 守护进程中启用 IPv6 支持,您需要修改 /etc/docker/daemon.json 文件并将 ipv6 键设置为 true。


35. 容器退出时会丢失数据吗?

不会,您的应用程序写入磁盘的任何数据都会存储在容器中。即使容器停止,文件系统也会保留。


36. Docker 中有哪些不同类型的卷挂载?

绑定挂载 - 它可以存储在主机系统的任何位置


37. 如何配置 Docker 中的默认日志记录驱动程序?

要将 Docker 守护进程配置为默认使用特定的日志记录驱动程序。您需要在 daemon.json 文件中将 log-driver 的值设置为日志记录驱动程序的名称。


38. 解释 Docker Trusted Registry?

Docker Trusted Registry 是 Docker 的企业级镜像存储工具。您应该在防火墙后安装它,以便安全地管理应用程序中使用的 Docker 镜像。


39. 什么是 Docker Namespaces?

Docker 中的 Namespace 是一种提供称为容器的隔离工作区的技术。Namespaces 还为 Docker 容器提供了一层隔离。


40. Docker 体系结构包含哪三个组件?

  • 客户端
  • Docker-Host
  • 仓库

41. 什么是客户端?

Docker 提供命令行界面工具供客户端与 Docker 守护进程交互。


42. Docker_Host 的目的是什么?

它包含容器、镜像和 Docker 守护进程。它提供了一个完整的环境来执行和运行您的应用程序。


43. 如何在同一主机上运行多个 Compose 文件副本?

Compose 使用项目名称,它允许您为项目的所有容器和其他资源创建唯一的标识符。要运行项目的多个副本,请使用 `-a` 命令行选项或使用 `COMPOSE_PROJECT_NAME` 环境变量设置自定义项目名称。

这些面试问题也将有助于您的口试