Share feedback
Answers are generated based on the documentation.

恶意软件扫描

Docker Hardened Image (DHI) 流水线在构建过程中会扫描病毒和恶意软件。扫描结果以签名证明的形式嵌入镜像,您可以独立获取并验证。

工作原理

Docker 使用开源杀毒引擎 ClamAV 扫描每个镜像的每一层。扫描在构建过程中自动运行,检查镜像中的所有文件(包括归档文件内部的文件),以查找已知病毒和恶意软件特征。

扫描结果作为附加到镜像的签名证明发布。该证明包含完整的 ClamAV 扫描报告,包括扫描的文件数量、病毒特征库版本,以及是否检测到任何被感染的文件。

查看恶意软件扫描证明

您可以使用 Docker Scout CLI 获取恶意软件扫描证明。

  1. 使用 docker scout attest get 命令,并指定病毒扫描谓词类型:

    $ docker scout attest get \
      --predicate-type https://scout.docker.com/virus/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/virus/v0.1 \
      --predicate \
      dhi.io/python:3.13
    

    输出是一个 JSON 对象,包含所用的扫描器和经过 base64 编码的扫描报告:

    {
      "scanner": {
        "report": "<base64-encoded ClamAV report>",
        "uri": "clamav/clamav:stable"
      }
    }

    解码该报告可看到完整的 ClamAV 输出,末尾是扫描摘要:

    ----------- SCAN SUMMARY -----------
    Known viruses: 3627833
    Engine version: 1.5.2
    Scanned directories: 4
    Scanned files: 21
    Infected files: 0
    Data scanned: 44.90 MiB
    Data read: 23.88 MiB (ratio 1.88:1)
    Time: 11.473 sec (0 m 11 s)
    Start Date: 2026:04:12 02:36:19
    End Date:   2026:04:12 02:36:30
  2. 验证证明签名。为确保该证明真实且由 Docker 签名,请运行:

    $ docker scout attest get \
      --predicate-type https://scout.docker.com/virus/v0.1 \
      --verify \
      dhi.io/<image>:<tag> --platform <platform>
    

    如果该证明有效,Docker Scout 会确认签名并显示对应的 cosign verify 命令。

要查看其他证明,例如 SBOM 或测试结果,请参阅验证镜像