恶意软件扫描
Docker Hardened Image (DHI) 流水线在构建过程中会扫描病毒和恶意软件。扫描结果以签名证明的形式嵌入镜像,您可以独立获取并验证。
工作原理
Docker 使用开源杀毒引擎 ClamAV 扫描每个镜像的每一层。扫描在构建过程中自动运行,检查镜像中的所有文件(包括归档文件内部的文件),以查找已知病毒和恶意软件特征。
扫描结果作为附加到镜像的签名证明发布。该证明包含完整的 ClamAV 扫描报告,包括扫描的文件数量、病毒特征库版本,以及是否检测到任何被感染的文件。
查看恶意软件扫描证明
您可以使用 Docker Scout CLI 获取恶意软件扫描证明。
-
使用
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 -
验证证明签名。为确保该证明真实且由 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 或测试结果,请参阅验证镜像。