Trivy是最主流的Docker镜像扫描工具,安装后执行“trivy image nginx:latest”即可快速完成扫描,输出包含CRITICAL/HIGH等漏洞等级、CVE编号、受影响组件及修复建议,并支持嵌入CI/CD流水线自动拦截高危镜像。

直接用命令扫描本地镜像是最常用、最快速的方式,关键在于选对工具、看清结果、及时处理。
选一个趁手的扫描工具
Trivy 是目前最主流的选择,安装简单、响应快、支持离线使用,一条命令就能跑完扫描:
- 安装(macOS):brew install aquasecurity/trivy/trivy
- 安装(Ubuntu):sudo apt-get install -y aquasec-trivy
- 扫描镜像:trivy image nginx:latest
其他可选工具包括:
MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。
- Snyk:需先登录账号(snyk auth),适合已有 Snyk 订阅的团队;
- Docker Scout:集成在 Docker Desktop 中,推镜像到 Hub 后自动触发,适合轻量验证;
- Grype + Syft 组合:Syft 提取软件清单(SBOM),Grype 匹配漏洞,适合高并发 CI 场景,减少重复解析开销。
看懂扫描结果的核心信息
输出里真正要关注的是三类内容:
- 严重等级分布:比如 CRITICAL: 2, HIGH: 5 —— 高危及以上必须处理;
- CVE 编号与影响组件:例如 CVE-2023-1234 in libcurl4 (7.88.1-10+deb12u3),明确指出哪个包、哪个版本有问题;
- 修复建议:通常会提示升级到哪个安全版本,或推荐换用更精简的基础镜像(如从 debian 改为 alpine)。
把扫描嵌入构建流程才真正起作用
只在本地手动扫一次意义有限。推荐在 CI/CD 中固化这一步:
- GitLab CI 示例:trivy image --exit-code 1 --severity CRITICAL,HIGH myapp:latest,遇到高危漏洞就中断流水线;
- GitHub Actions 可直接调用 aquasecurity/trivy-action;
- 构建后不立即推送,先扫描,通过再 push,避免带病镜像进入仓库。
配合基础优化效果更明显
扫描只是发现问题,缩小攻击面才能降低风险概率:
- 用多阶段构建,运行镜像只保留二进制和必要配置,剔除构建工具、缓存、文档等;
- 优先选用官方维护的 slim 或 alpine 镜像,系统包更少、更新更勤;
- 定期重建镜像(比如每周),让底层 OS 和依赖自动拉取最新补丁版本。

















