Docker 强化镜像的测试方式
Table of contents
Docker 强化镜像(DHIs)旨在实现安全、精简且可用于生产环境。为确保其可靠性和安全性,Docker 采用了一套全面的测试策略,您可以使用签名的证明(attestations)和开源工具独立进行验证。
每个镜像都会针对标准合规性、功能性和安全性进行测试。测试结果会作为签名证明嵌入其中,您可以使用 Docker Scout CLI 以编程方式检查和验证这些证明。
测试策略概览
DHI 的测试流程主要关注两个方面:
- 镜像标准合规性:确保每个镜像都符合严格的大小、安全性和兼容性标准。
- 应用程序功能性:验证镜像内的应用程序能够正常运行。
镜像标准合规性
每个 DHI 都会经过严格的检查,以满足以下标准:
- 最小攻击面:镜像构建得尽可能小,移除了不必要的组件以减少潜在漏洞。
- 近乎为零的已知 CVE:使用 Docker Scout 等工具扫描镜像,确保不存在已知的通用漏洞和暴露(CVE)。
- 多架构支持:DHI 为多种架构(
linux/amd64和linux/arm64)构建,确保广泛的兼容性。 - Kubernetes 兼容性:测试镜像能否在 Kubernetes 集群中无缝运行,确保其满足容器编排环境的要求。
应用程序功能性测试
Docker 会对 Docker 强化镜像进行测试,以确保它们在典型使用场景下表现符合预期。这包括验证:
- 应用程序在容器化环境中能够成功启动和运行。
- 运行时行为与上游预期保持一致。
- 构建变体(如
-dev镜像)支持常见的开发和构建任务。
目标是确保 DHI 在最常见的用例中开箱即用,同时保持强化、精简的设计。
自动化测试与 CI/CD 集成
Docker 将自动化测试集成到其持续集成/持续部署(CI/CD)流程中:
- 自动化扫描:每次镜像构建都会触发漏洞扫描和合规性检查。
- 可重现的构建:构建流程设计为可重现的,确保在不同环境中的一致性。
- 持续监控:Docker 持续监控新的漏洞,并相应地更新镜像以维持安全标准。
测试证明
Docker 提供一份测试证明,详细说明每个 DHI 所经历的测试和验证过程。
查看和验证测试证明
您可以使用 Docker Scout CLI 查看并验证此证明。
-
使用
docker scout attest get命令并指定测试谓词类型:$ docker scout attest get \ --predicate-type https://scout.docker.com/tests/v0.1 \ --predicate \ dhi.io/<image>:<tag>Note如果镜像存在于本地设备上,必须在镜像名称前加上
registry://前缀。例如,使用registry://dhi.io/python而不是dhi.io/python。例如:
$ docker scout attest get \ --predicate-type https://scout.docker.com/tests/v0.1 \ --predicate \ dhi.io/python:3.13这包含了测试列表及其结果。
输出示例:
v SBOM obtained from attestation, 101 packages found v Provenance obtained from attestation { "reportFormat": "CTRF", "results": { "summary": { "failed": 0, "passed": 1, "skipped": 0, "start": 1749216533, "stop": 1749216574, "tests": 1 }, "tests": [ { ... -
验证测试证明签名。为确保证明真实且由 Docker 签名,请运行:
docker scout attest get \ --predicate-type https://scout.docker.com/tests/v0.1 \ --verify \ dhi.io/<image>:<tag> --platform <platform>输出示例:
v SBOM obtained from attestation, 101 packages found v Provenance obtained from attestation v cosign verify registry.scout.docker.com/docker/dhi-python@sha256:70c8299c4d3cb4d5432734773c45ae58d8acc2f2f07803435c65515f662136d5 \ --key https://registry.scout.docker.com/keyring/dhi/latest.pub --experimental-oci11 Verification for registry.scout.docker.com/docker/dhi-python@sha256:70c8299c4d3cb4d5432734773c45ae58d8acc2f2f07803435c65515f662136d5 -- The following checks were performed on each of these signatures: - The cosign claims were validated - Existence of the claims in the transparency log was verified offline - The signatures were verified against the specified public key i Signature payload ...
如果证明有效,Docker Scout 会确认签名并显示匹配的 cosign verify 命令。
要查看其他证明,例如 SBOM 或漏洞报告,请参阅验证镜像。