Docker 核心与镜像构建

共 26 题
#

1. Docker layer cache 在镜像构建中如何命中与失效?

A 缓存命中与指令无关
B 层缓存以指令与上下文内容为键,中间失效则后续全失效,调整指令顺序可优化 ✓ 正确答案
C COPY 文件变化不影响缓存
D 缓存永不失效
#

2. Docker 镜像分层(Layer)与联合文件系统中为什么修改文件会新增一层而非修改原层以及构建缓存(Build Cache)如何基于层复用生效与失效?

A 镜像层只读,修改文件用 COW 新增层而非改原层,构建缓存按层复用、输入变化即失效 ✓ 正确答案
B 修改文件会直接改原层
C 分层与缓存无关
D 镜像层可随意修改
#

3. docker run --security-opt 可配置哪些容器安全选项?

A seccomp 与安全无关
B --security-opt 只能配置内存
C --security-opt 可配置 seccomp、AppArmor、SELinux 与 no-new-privileges 等安全选项 ✓ 正确答案
D no-new-privileges 无法使用
#

4. docker run 的 --cap-add 与 --cap-drop 如何控制容器能力?

A --cap-drop 移除不需要的能力、--cap-add 按需添加,实现细粒度最小权限 ✓ 正确答案
B --cap-add 与 --cap-drop 等价
C 容器默认拥有全部 root 权限
D --privileged 比 cap 控制更安全
#

5. docker run 的 --memory 与 --cpus 如何限制容器资源?

A 资源限制与 cgroup 无关
B --memory 只是软限制
C --cpus 会硬绑定到单核
D --memory 限制内存上限(超限 OOM),--cpus 限制 CPU 配额,均通过 cgroup 实现 ✓ 正确答案
#

6. overlay2 存储驱动机制

A overlay2 用 lower(只读镜像层)+upper(可写层)合并视图,COW 修改,性能好 ✓ 正确答案
B overlay2 不支持 COW
C overlay2 性能比 devicemapper 差
D overlay2 需要块设备
#

7. Docker BuildKit --cache-from 如何实现远程缓存?

A BuildKit 缓存不能跨构建复用
B --cache-from 无法复用缓存
C --cache-from 从远程/本地缓存源加载层缓存,配合 --cache-to 导出,加速 CI 构建 ✓ 正确答案
D --cache-from 只用于本地
#

8. Docker Compose profiles 如何按环境启用不同的服务集合?

A profiles 通过服务标签按环境/功能启用服务子集,--profile 控制启动范围 ✓ 正确答案
B profiles 无法按环境区分
C 所有服务总是启动
D profiles 只影响镜像
#

9. Docker image tagging 如何实现版本管理?

A tag 与 digest 等价
B latest 总是最稳定
C tag 是可变版本指针,digest 是不可变标识,生产应锁定版本/digest 保证可复现 ✓ 正确答案
D 版本管理只需用 latest
#

10. Docker rootless 模式如何降低守护进程权限?

A rootless 模式通过用户命名空间让容器以非 root 运行,降低权限风险但功能受限 ✓ 正确答案
B rootless 仍以 root 运行
C rootless 提升权限
D rootless 无需内核支持
#

11. Docker 如何实现 overlay 网络?

A Docker overlay 网络用 VXLAN 隧道跨主机连接容器,实现统一虚拟网络 ✓ 正确答案
B overlay 网络只限单主机
C overlay 网络无需隧道
D overlay 网络只能在 swarm 模式外使用
#

12. Docker 存储驱动 overlay2 与 devicemapper 的适用场景差异

A devicemapper 是当前默认驱动
B devicemapper 性能优于 overlay2
C overlay2 与 devicemapper 完全相同
D overlay2 基于文件系统层叠、性能好是默认,devicemapper 块设备隔离但性能差 ✓ 正确答案
#

13. dive 与镜像分析中如何逐层查看镜像内容、定位构建缓存失效与镜像体积膨胀的根因?

A dive 无法查看层内容
B dive 逐层分析镜像文件与体积,定位膨胀根因与缓存失效,指导镜像瘦身 ✓ 正确答案
C dive 只能看整体大小
D dive 与镜像优化无关
#

14. docker build --build-arg 如何向构建过程传递参数?

A --build-arg 无法传参
B ARG 与 ENV 完全相同
C --build-arg 传构建期 ARG,不进运行时环境,但会出现在镜像历史,敏感信息勿用 ✓ 正确答案
D ARG 值不会出现在镜像历史
#

15. docker exec 如何进入运行中的容器进行调试?

A docker exec 会重启容器
B docker exec 只能执行镜像命令
C docker exec 无法启 shell
D docker exec -it 在运行容器内启动 shell 调试,可查进程/日志/网络,但需注意生产安全 ✓ 正确答案
#

16. docker inspect 如何查看容器与镜像的元数据?

A docker inspect 无法查看网络
B docker inspect 只能查镜像
C docker inspect 输出 yaml
D docker inspect 输出容器/镜像 JSON 元数据,可用 -f 提取特定字段 ✓ 正确答案
#

17. docker system prune 与磁盘回收

A prune 无法清理镜像
B prune 只清理容器
C prune 永不删数据
D docker system prune 清理未使用资源释放磁盘,-a/--volumes 需谨慎防误删 ✓ 正确答案
#

18. hadolint(Dockerfile lint)与镜像静态检查中在 CI 如何落地 Dockerfile 规范门禁?

A hadolint 静态检查 Dockerfile 规范,可在 CI 中作为门禁强制执行最佳实践 ✓ 正确答案
B hadolint 只检查镜像大小
C hadolint 无法在 CI 使用
D hadolint 会运行镜像
#

19. 容器中的 init 与 PID 1 问题,即为什么直接运行应用作为 PID 1 会带来信号(SIGTERM/SIGINT)与僵尸进程回收问题以及 tini/dumb-init 的工程价值?

A tini 与信号无关
B 直接跑应用作为 PID 1 无问题
C 僵尸进程无需回收
D PID 1 需处理信号与回收僵尸,直接跑应用会优雅退出失败或僵尸堆积,tini 解决 ✓ 正确答案
#

20. 容器挂载 docker.sock 有哪些权限风险,如何规避?

A 挂载 docker.sock 是安全的
B docker.sock 挂载无风险
C docker.sock 与 root 权限无关
D docker.sock 是守护进程控制接口,挂载即获得宿主机控制权,需避免或最小化暴露 ✓ 正确答案
#

21. 镜像仓库(Registry)的选型与运维中 Docker Hub/Harbor/Nexus 的差异、镜像清理策略(GC、保留策略)与不可变 digest 部署的安全收益?

A Docker Hub 具备企业级治理能力
B Harbor 提供 RBAC/扫描/复制等企业级能力,运维需 GC 清理与不可变 digest 部署 ✓ 正确答案
C 镜像仓库无需清理
D 生产应使用可变 tag 部署
#

22. Docker Swarm manager 如何实现管理节点?

A manager 不参与调度
B manager 只执行任务
C Swarm 只有一个 manager
D Swarm manager 负责集群管理与调度,多 manager 用 Raft 保证一致与高可用 ✓ 正确答案
#

23. Docker Swarm secrets 如何安全地向服务分发敏感信息?

A secrets 明文存储
B Swarm secrets 加密存储于 Raft,仅授权服务挂载读取,安全分发敏感信息 ✓ 正确答案
C secrets 放在环境变量
D secrets 与 config 完全相同
#

24. Docker 日志驱动(json-file/journald/splunk)的选型与磁盘占满防护

A 日志无需限制大小
B 日志驱动按集中化需求选型,需配置轮转与大小限制防磁盘占满 ✓ 正确答案
C json-file 日志不会占满磁盘
D 日志驱动与磁盘无关
#

25. docker-slim 与镜像瘦身中 minify 的原理、兼容性风险与适用场景?

A minify 无兼容性风险
B docker-slim 只压缩
C docker-slim 裁剪运行所需外的文件瘦身,但动态分析可能漏删,需充分验证 ✓ 正确答案
D docker-slim 会增大镜像
#

26. 镜像标签(tag)与不可变 digest 的部署差异,即为什么生产环境应使用 digest 而非 mutable tag 以保障可复现与供应链审计?

A latest 是最稳定的
B tag 与 digest 等价
C tag 可变,digest 不可变,生产用 digest 保证可复现、可审计、防篡改 ✓ 正确答案
D 生产应使用 latest