全部学科
Python全栈
python
NodeJS全栈
nodejs
📝 1 篇文章 10 道配套习题

性能调优实战专题

专题说明

镜像层优化与瘦身、构建缓存策略、容器启动加速、存储IO调优与容器密度规划。

学习目标

  1. 掌握镜像层优化与瘦身
  2. 掌握构建缓存策略
  3. 掌握容器启动加速
  4. 掌握存储 IO 性能调优
  5. 掌握网络延迟优化
  6. 掌握容器密度与资源规划
  7. 能够独立完成性能调优实战相关实际场景的操作与排错

学习内容

  • 镜像层优化与瘦身
  • 构建缓存策略
  • 容器启动加速
  • 存储 IO 性能调优
  • 网络延迟优化
  • 容器密度与资源规划

学习建议

  1. 按照知识点排列顺序循序渐进,先理解概念再动手实践
  2. 每学完一个知识点后完成对应的配套练习题巩固
  3. 遇到问题时优先查阅官方文档,结合容器日志排查

📝 配套习题(10 题)

💡 参考答案在文末
判断题
1

如果 Dockerfile 中的 COPY . . 指令之前有 RUN apt-get install 指令,当源文件变化时,RUN apt-get install 仍会命中缓存。

A

B

单选题
2

对于运行数据库的容器,以下哪种存储方案能提供最优的 IO 性能?

A

使用 overlay2 的默认层

B

使用命名卷(named volume)

C

使用绑定挂载(bind mount)直接挂载 SSD 分区

D

使用 tmpfs 挂载

3

调整 Docker bridge 网络的 MTU 值主要影响什么?

A

容器的 DNS 解析速度

B

网络包的吞吐量

C

网络包的延迟

D

网络包的分片行为和传输效率

4

在 Dockerfile 中将多个 RUN 指令合并为一条(如 RUN apt-get update && apt-get install -y pkg1 pkg2 && rm -rf /var/lib/apt/lists/*),主要目的是什么?

A

提高构建速度

B

减少镜像层数,减小镜像体积

C

提高容器启动速度

D

避免 apt-get 缓存导致的构建错误

5

在 Dockerfile 中,以下哪种指令排列方式最有利于构建缓存命中?

A

将频繁变化的指令放在前面,稳定不变的指令放在后面

B

将稳定不变的指令放在前面,频繁变化的指令放在后面

C

指令顺序对缓存没有影响

D

将所有指令合并为一条 RUN

多选题
6

以下哪些方法可以有效提升容器的存储 IO 性能?

A

使用 SSD 作为 Docker 数据目录的存储介质

B

调整 IO 调度算法为 noopdeadline

C

增加 overlay2 的层数

D

使用 --storage-opt 配置 direct-lvm 模式

E

减少容器内的文件写入操作

7

规划单机容器密度时,需要考虑以下哪些因素?

A

宿主机的 CPU 核心数和内存容量

B

每个容器的资源配额(requests/limits)

C

容器的业务特征(CPU 密集型 vs IO 密集型)

D

故障爆炸半径(一个宿主机故障影响的容器数量)

E

宿主机的磁盘 IO 能力

8

以下哪些方法可以有效减小 Docker 镜像的最终体积?

A

使用多阶段构建

B

使用 Alpine 基础镜像

C

合并 RUN 指令并清理缓存

D

在 .dockerignore 中排除无关文件

E

使用更少的 ENV 变量

9

以下哪些方法可以有效减少容器的启动延迟(冷启动时间)?

A

使用较小的基础镜像

B

优化 ENTRYPOINT 脚本,减少初始化等待时间

C

预先拉取所需镜像到宿主机

D

使用 host 网络模式代替 bridge 模式

E

在容器启动时执行大量的数据初始化操作

填空题
10

在调度容器前,可以使用 docker ____________ 命令预先将镜像下载到宿主机,减少冷启动延迟。

参考答案
1.错误 2.C 3.D 4.B 5.B 6.A;B;D 7.A;B;C;D;E 8.A;B;C;D 9.A;B;C 10.pull
想在手机上练习这套专题?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码
← 上一个专题 底层原理与架构专题
下一个专题 → 日志管理专题
扫码体验小程序
加载中
想在手机上刷题学习?
使用微信卷王开发者小程序,打开首页顶部扫码功能识别二维码