Docker 强化镜像如何进行测试

Docker 强化镜像 (DHI) 旨在实现安全、精简和生产就绪。为确保其可靠性和安全性,Docker 采用全面的测试策略,您可以使用签名证明和开放工具独立验证。

每个镜像都经过标准合规性、功能性和安全性测试。测试结果作为签名证明嵌入,可以使用 Docker Scout CLI 通过编程方式检查和验证

测试策略概述

DHI 的测试过程主要关注两个方面

  • 镜像标准合规性:确保每个镜像都符合严格的大小、安全性和兼容性标准。
  • 应用程序功能:验证镜像中的应用程序功能是否正常。

镜像标准合规性

每个 DHI 都经过严格检查,以满足以下标准

  • 最小攻击面:镜像构建得尽可能小,移除不必要的组件以减少潜在漏洞。
  • 接近零的已知 CVE:使用 Docker Scout 等工具扫描镜像,确保其没有已知的常见漏洞和暴露 (CVE)。
  • 多架构支持:DHI 针对多种架构(linux/amd64linux/arm64)构建,以确保广泛兼容性。
  • Kubernetes 兼容性:镜像经过测试,可在 Kubernetes 集群中无缝运行,确保它们满足容器编排环境的要求。

应用程序功能测试

Docker 测试 Docker 强化镜像,以确保它们在典型使用场景中表现符合预期。这包括验证以下内容:

  • 应用程序在容器化环境中成功启动和运行。
  • 运行时行为符合上游预期。
  • 构建变体(如 -dev 镜像)支持常见的开发和构建任务。

目标是确保 DHI 在最常见的使用场景中开箱即用,同时保持强化、精简的设计。

自动化测试和 CI/CD 集成

Docker 将自动化测试集成到其持续集成/持续部署 (CI/CD) 管道中

  • 自动化扫描:每个镜像构建都会触发自动化漏洞扫描和合规性检查。
  • 可重现构建:构建过程设计为可重现,确保不同环境之间的一致性。
  • 持续监控:Docker 持续监控新的漏洞并相应更新镜像,以维护安全标准。

测试证明

Docker 提供了一份测试证明,详细说明了每个 DHI 所经历的测试和验证过程。

查看和验证测试证明

您可以使用 Docker Scout CLI 查看和验证此证明。

  1. 使用 docker scout attest get 命令和测试谓词类型

    $ docker scout attest get \
      --predicate-type https://scout.docker.com/tests/v0.1 \
      --predicate \
      <your-namespace>/dhi-<image>:<tag> --platform <platform>
    

    例如:

    $ docker scout attest get \
      --predicate-type https://scout.docker.com/tests/v0.1 \
      --predicate \
      docs/dhi-python:3.13 --platform linux/amd64
    

    这包含测试列表及其结果。

    示例输出

        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": [
              {
                ...
    
  2. 验证测试证明签名。为确保证明真实并由 Docker 签名,请运行

    docker scout attest get \
      --predicate-type https://scout.docker.com/tests/v0.1 \
      --verify \
      <your-namespace>/dhi-<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 或漏洞报告,请参阅验证镜像

© . This site is unofficial and not affiliated with Kubernetes or Docker Inc.