Docker面试题手册

梳理高频技术问题,帮助你按主题复习和查漏补缺。

服务端阅读 02月17日 23:48

Docker Compose 的作用和常用命令有哪些?

Docker Compose 是用于定义和运行多容器 Docker 应用的工具。它使用 YAML 格式的 docker-compose.yml 文件来配置应用的服务。常用命令包括:docker-compose up(启动服务)、docker-compose down(停止并删除容器)、docker-compose ps(查看容器状态)、docker-compose logs(查看日志)、docker-compose exec(在容器中执行命令)、docker-compose build(构建镜像)。Docker Compose 简化了开发环境的搭建,适合本地开发和测试。
服务端阅读 02月17日 23:48

Docker COPY 和 ADD 指令的区别是什么?

Docker COPY 和 ADD 都用于将文件从宿主机复制到镜像中,但有重要区别。COPY 只能复制本地文件,简单直接;ADD 支持自动解压压缩文件(tar、gzip、bzip2 等)和从 URL 下载文件。最佳实践是优先使用 COPY,因为它的行为更可预测。ADD 的自动解压功能虽然方便,但可能导致意外结果。如果需要从 URL 下载文件,建议使用 RUN wget 或 curl,这样可以在同一层中清理缓存。COPY 语法:COPY [--chown=:] … 。
服务端阅读 02月17日 23:48

Docker Desktop 的功能和使用场景是什么?

Docker Desktop 是 Docker 官方提供的桌面应用程序,支持 Windows 和 macOS。主要功能:提供图形化管理界面、简化 Docker 安装和配置、支持 Kubernetes 集群、集成容器镜像构建工具、支持 Docker Compose、提供资源限制设置。Docker Desktop 包含 Docker Engine、Docker CLI、Docker Compose、Kubernetes 等组件。适合本地开发环境,但不适合生产环境。替代方案:使用 Docker Engine 直接安装、使用 Rancher Desktop、使用 Colima(macOS)。注意 Docker Desktop 的许可协议变化。
服务端阅读 02月17日 23:48

Docker Swarm 的作用和常用命令有哪些?

Docker Swarm 是 Docker 原生的容器编排工具,用于管理多主机上的容器集群。主要概念包括:Node(节点,分为 Manager 和 Worker)、Service(服务,定义期望状态)、Task(任务,服务的工作单元)、Stack(栈,一组相关服务)。常用命令:docker swarm init(初始化集群)、docker swarm join(加入集群)、docker service create(创建服务)、docker service scale(扩展服务)、docker stack deploy(部署栈)。Swarm 提供负载均衡、服务发现、滚动更新等功能。
服务端阅读 02月17日 23:48

Docker 容器的隔离机制是什么?

Docker 使用 Linux 的命名空间(Namespace)和控制组(Cgroup)实现容器隔离。命名空间提供进程、网络、文件系统、用户等隔离:PID namespace(进程隔离)、NET namespace(网络隔离)、MNT namespace(文件系统隔离)、UTS namespace(主机名隔离)、IPC namespace(进程间通信隔离)、USER namespace(用户隔离)。Cgroup 用于资源限制和监控,可以限制 CPU、内存、磁盘 I/O 等资源使用。这些技术确保容器之间相互隔离,同时共享宿主机内核。
服务端阅读 02月17日 23:47

Docker 健康检查的配置和使用方法是什么?

Docker 健康检查(Health Check)用于监控容器内应用的健康状态。通过 HEALTHCHECK 指令在 Dockerfile 中定义,或使用 docker run --health-cmd 参数。检查命令定期执行,根据退出码判断健康状态:0 表示健康,1 表示不健康,2 表示保留状态。相关参数:--interval(检查间隔,默认 30s)、--timeout(超时时间,默认 30s)、--retries(失败重试次数,默认 3)、--start-period(启动宽限期)。docker ps 命令显示健康状态(healthy、unhealthy、starting)。健康检查失败时,Swarm 会自动重启不健康的容器。
服务端阅读 02月17日 23:47

Docker 多阶段构建的原理和使用场景是什么?

Docker 多阶段构建(Multi-stage build)允许在一个 Dockerfile 中使用多个 FROM 指令,每个 FROM 开始一个新的构建阶段。这样可以只保留最终需要的文件,大幅减小镜像体积。例如:第一阶段使用编译环境构建应用,第二阶段使用轻量级运行时环境复制编译产物。使用 AS 关键字命名阶段,使用 --from 参数复制前一阶段的文件。多阶段构建特别适合编译型语言(如 Go、Java、C++)的应用,可以将编译工具链留在构建阶段,最终镜像只包含运行时。
服务端阅读 02月17日 23:47

Docker 安全最佳实践有哪些?

Docker 安全最佳实践包括:使用官方或可信的基础镜像、定期更新镜像以修复安全漏洞、避免在镜像中存储敏感信息(使用环境变量或 secrets)、以非 root 用户运行容器、限制容器的资源使用、使用 --read-only 标志使容器文件系统只读、使用 Docker Content Trust 验证镜像签名、限制容器的 capabilities(使用 --cap-drop 和 --cap-add)、使用 AppArmor 或 SELinux 增强安全隔离、定期审计和监控容器。
服务端阅读 02月17日 23:47

Docker 容器与 CI/CD 集成的方法是什么?

Docker 容器与 CI/CD 集成可以大幅提升开发效率。在 CI/CD 流程中,Docker 的应用包括:1)使用 Docker 容器作为构建环境,确保构建环境一致性;2)使用 Dockerfile 构建应用镜像;3)使用 docker-compose 在测试环境中启动依赖服务;4)使用 Docker 镜像作为制品,实现构建产物标准化;5)使用 Docker 镜像仓库存储和分发镜像;6)在测试阶段使用 Docker 运行集成测试;7)使用 Docker 容器部署到生产环境。常用 CI/CD 工具:Jenkins、GitLab CI、GitHub Actions、CircleCI 等,都提供 Docker 支持。
服务端阅读 02月17日 23:47

Docker 容器与反向代理的部署方法是什么?

Docker 容器与反向代理的部署可以实现负载均衡和 SSL 终止。常用反向代理:Nginx、Traefik、HAProxy、Caddy。部署方式:1)使用官方镜像部署反向代理;2)配置反向代理与后端容器的网络连接;3)使用 Docker Compose 编排反向代理和应用容器;4)配置 SSL 证书(Let's Encrypt)。Traefik 特点:自动发现容器、自动配置、支持 Let's Encrypt 自动续期。最佳实践:配置健康检查、实现负载均衡算法、设置超时和重试、监控代理性能、配置访问日志。