Skip to content

Docker 面试题速查

更新日期: 2025-12-31

基础

Q1:容器与虚拟机的区别?

  • 标准答案:容器共享宿主内核,通过 namespace 隔离、cgroups 做资源限制;虚拟机有独立内核,开销更大但隔离更强;容器适合快速、弹性部署。
  • 追问点:安全隔离差异;rootless 容器;适用场景取舍。
  • 参考:https://docs.docker.com/get-started/overview/

Q2:镜像分层与 UnionFS?

Q3:Dockerfile 最佳实践?

Q4:网络模式有哪些?

  • 标准答案:bridge(默认)、host、none、自定义网络、container 共享网络;自定义 bridge 支持服务发现与别名;host 模式性能好但端口冲突风险。
  • 追问点:端口映射原理;DNS 解析;多网卡场景。
  • 参考:https://docs.docker.com/network/

Q5:数据持久化方式?

  • 标准答案:卷(volume) 由 Docker 管理,适合持久化;绑定挂载(bind mount) 直接映射宿主路径;tmpfs 内存盘;选择取决于可移植性和性能需求。
  • 追问点:权限与 SELinux;卷驱动插件;备份策略。
  • 参考:https://docs.docker.com/storage/

Q6:资源限制与隔离?

  • 标准答案:通过 --memory/--cpus/--cpu-shares/--pids-limit 等参数限制;ulimit 控制文件句柄;避免宿主被拖垮;需要监控容器的 cgroup 指标。
  • 追问点:内存 OOM-kill 行为;内核参数 sysctl;NUMA/CPU 亲和性。
  • 参考:https://docs.docker.com/config/containers/resource_constraints/

Q7:日志与排查?

  • 标准答案:默认 json-file 驱动,需配合 logrotate;可切换 syslog/fluentd 等;docker logs 仅适用于小流量;生产建议 stdout 收集到集中系统。
  • 追问点:日志丢失风险;多行日志处理;容器崩溃日志保留。
  • 参考:https://docs.docker.com/config/containers/logging/configure/

Q8:镜像安全与签名?

  • 标准答案:定期扫描漏洞;使用私有 Registry 和最小基础镜像;Notary/Content Trust 或 cosign 进行签名;控制凭证。
  • 追问点:SBOM 生成;rootless 镜像拉取;CI 中的安全门。
  • 参考:https://docs.docker.com/engine/security/

场景/排查

Q1:镜像过大导致传输慢怎么办?

  • 标准答案:多阶段构建、清理包管理缓存、选择 alpine/distroless、合并层;拆分可选功能到独立镜像;启用镜像加速或私有 registry 缓存。
  • 追问点:alpine 与 glibc 兼容问题;层缓存命中技巧;构建扫描。
  • 参考:https://docs.docker.com/develop/develop-images/multistage-build/

Q2:容器内存 OOM 排查步骤?

  • 标准答案:查看 docker events/内核日志确认 OOM;检查 cgroup 限制与应用峰值;分析是否存在内存泄漏或缓存未释放;必要时升配或分片。
  • 追问点:Java/Node 需要手动调 JVM/heap;--oom-score-adj;预警指标。
  • 参考:https://docs.docker.com/config/containers/resource_constraints/

反问

Q1:公司标准镜像与 Registry 策略?

  • 标准答案:确认是否有基础镜像、镜像扫描、拉取权限和镜像加速规则。
  • 追问点:镜像保留/清理策略;签名要求;SBOM。
  • 参考:团队内部规范

Q2:编排环境是什么?K8s/Swarm/裸机?

  • 标准答案:有助于决定健康检查、探针、资源限制的写法和调试工具。
  • 追问点:发布流程;回滚/灰度;日志与监控采集。
  • 参考:团队内部规范

基于 VitePress 构建