Skip to content

容器镜像仓库最佳实践测验 ​

最后更新:2026 年 9 月 11 日

  1. 为什么不可变标签被视为容器镜像仓库的最佳实践?
    • A) 它可以降低存储成本
    • B) 它可确保标签始终指向相同的镜像内容,从而使部署具有可复现性
    • C) 它可以加快镜像拉取速度
    • D) Kubernetes 要求必须使用它
显示答案

答案:B) 它可确保标签始终指向相同的镜像内容,从而使部署具有可复现性

说明: 标签不可变性可确保使用特定标签推送镜像后,该标签不能再被覆盖为其他镜像。固定已验证的摘要(digest)还能标识确切的镜像。应保留该制品以便回滚;仅靠标签不可变性并不能普遍保证删除保护或来源可信度。这是供应链安全的基本实践。

  1. 在生产 Kubernetes 部署中使用 :latest 标签的主要风险是什么?
    • A) 镜像不会被缓存
    • B) Kubernetes 无法拉取带有 latest 标签的镜像
    • C) 实际镜像内容不可预测,且可能在不同部署之间发生变化
    • D) latest 标签已弃用
显示答案

答案:C) 实际镜像内容不可预测,且可能在不同部署之间发生变化

说明:latest 是普通标签;它不会自动选择最近推送的镜像。除非通过不可变策略加以保护,否则有人推送到该标签时,它指向的内容就会改变。在生产环境中使用它,意味着无法保证运行的是哪个版本,回滚也不可靠,而且由于不知道部署了什么代码,调试会更加困难。最佳实践是使用语义版本或基于 Git SHA 的标签。

  1. 配置仓库同步副本或拉取缓存的主要好处是什么?
    • A) 它可以加快镜像构建速度
    • B) 它可以减少外部网络流量、缩短拉取延迟并缓解速率限制
    • C) 它可以自动更新镜像
    • D) 它可以提供漏洞扫描
显示答案

答案:B) 它可以减少外部网络流量、缩短拉取延迟并缓解速率限制

说明: 仓库同步副本和拉取缓存会在本地存储外部镜像的副本。这样可以降低带宽成本和对外部服务的依赖、加快本地网络中的拉取速度、避免速率限制(例如 Docker Hub 的限制),并在外部镜像仓库不可用时提高可靠性。缓存未命中或刷新仍依赖上游访问。断网环境需要预先备齐镜像的完整仓库同步副本,并测试更新流程。

  1. 在多区域 Kubernetes 部署中,容器镜像仓库推荐采用什么灾难恢复策略?
    • A) 使用单个全局镜像仓库
    • B) 将镜像复制到每个区域的镜像仓库,并让部署使用所在区域的镜像仓库
    • C) 将所有镜像存储在 S3 中并直接拉取
    • D) 在每个节点上使用镜像缓存
显示答案

答案:B) 将镜像复制到每个区域的镜像仓库,并让部署使用所在区域的镜像仓库

说明: 为了实现灾难恢复(DR)和高可用性,应将镜像复制到每个部署区域的镜像仓库。这样,某个区域的镜像仓库中断不会妨碍其他区域的部署,也能降低跨区域拉取的网络延迟,并减少对外部镜像仓库的依赖。部署应引用所在区域的镜像仓库端点。

  1. 哪种做法有助于优化容器镜像仓库的存储成本?
    • A) 禁用镜像扫描
    • B) 实施生命周期策略,自动删除旧镜像和未使用的镜像
    • C) 使用更大的基础镜像
    • D) 以未压缩形式存储镜像
显示答案

答案:B) 实施生命周期策略,自动删除旧镜像和未使用的镜像

说明: 生命周期策略可根据镜像的存在时长、数量或标签模式自动清理镜像。这可以防止开发迭代、旧版本和已放弃的实验导致存储量无限增长。还可结合多阶段构建和精简基础镜像,降低每个镜像的大小。定期执行垃圾回收可释放已删除镜像层占用的空间。

  1. 在 CI/CD 流水线的哪个阶段应扫描容器镜像漏洞?
    • A) 仅在生产环境中
    • B) 构建后尽早扫描,并在将镜像移入生产环境或部署之前完成
    • C) 仅在手动安全审计期间
    • D) 部署到 Kubernetes 之后
显示答案

答案:B) 构建后尽早扫描,并在将镜像移入生产环境或部署之前完成

说明: 可以在本地构建后扫描,也可以在隔离的暂存镜像仓库中,按摘要扫描准备移入生产环境的镜像。部署通过检查的同一制品,并在出现新的 CVE 时重新扫描。镜像仓库扫描和准入验证可作为 CI 门禁的补充。

  1. Kubernetes 准入控制器如何增强容器镜像仓库的安全性?
    • A) 加快镜像拉取速度
    • B) 在创建 Pod 前验证镜像是否来自允许的镜像仓库并符合安全要求
    • C) 自动更新镜像
    • D) 压缩镜像
显示答案

答案:B) 在创建 Pod 前验证镜像是否来自允许的镜像仓库并符合安全要求

说明: Gatekeeper/OPA、Kyverno 或云服务提供商提供的准入控制器可以在部署时强制执行策略:要求镜像来自获准的镜像仓库、验证镜像签名、检查镜像是否已通过漏洞扫描,以及阻止使用 :latest 等特定标签的镜像。这会在工作负载运行前提供最后一道安全关卡。

  1. 推荐采用哪种容器镜像标签命名约定?
    • A) 随机 UUID
    • B) 语义版本(v1.2.3)或 Git 提交 SHA,并使用有效的标签字符
    • C) 仅使用时间戳
    • D) 开发人员姓名缩写
显示答案

答案:B) 语义版本(v1.2.3)或 Git 提交 SHA,并使用有效的标签字符

说明: 良好的标签命名方式可以追踪已部署镜像对应的源代码。语义版本(v1.2.3)可以说明版本发布的重要性。Git SHA 可以精确追踪到提交。组合使用两者(v1.2.3-abc1234)或添加构建编号(v1.2.3-build.456),可以提供完整的来源链路。这有助于调试、审计和回滚决策。

  1. 拉取缓存与完整仓库同步副本有什么区别?
    • A) 拉取缓存会主动存储所有镜像;仓库同步副本则按需拉取
    • B) 拉取缓存会按需拉取并缓存镜像;仓库同步副本会主动同步所有镜像
    • C) 两者是相同的概念
    • D) 拉取缓存只能用于 Docker Hub
显示答案

答案:B) 拉取缓存会按需拉取并缓存镜像;仓库同步副本会主动同步所有镜像

说明: 拉取缓存仅在镜像首次被请求后才存储它,并缓存起来供后续拉取。完整仓库同步副本会主动从源镜像仓库复制全部或选定的镜像,无论这些镜像是否已被请求。拉取缓存占用的存储空间较少,但首次拉取会有冷启动延迟;仓库同步副本则能确保所有镜像都已在本地,可立即使用。

  1. 在什么情况下,组织应考虑采用多个容器镜像仓库?
    • A) 绝不应采用;一个镜像仓库总是够用
    • B) 不同镜像类别有不同的安全、合规、地域或运维要求时
    • C) 仅在成本过高时
    • D) 仅用于备份
显示答案

答案:B) 不同镜像类别有不同的安全、合规、地域或运维要求时

说明: 在以下情况下,使用多个镜像仓库是合理的:分开存储公开镜像和私有镜像;满足合规要求(例如,将受监管的数据存储在指定区域);优化全球部署的延迟;隔离生产镜像与开发镜像;或针对不同用途使用专门的镜像仓库(例如,AWS 工作负载使用 ECR,本地部署使用 Harbor)。其代价是运维复杂度增加。

向文档提问

按 Enter 发送,按 Shift+Enter 换行。