Trivy 镜像扫描是什么
Trivy 是开源扫描器,可在构建或上线前检查容器镜像中的操作系统包与语言依赖问题,也能覆盖部分配置类风险。它的典型用法是把「发现高危即失败」写进 CI,作为镜像上线的卡点;同时保留 JSON 输出供平台消费。需要注意镜像扫描结果是随时间变化的:今天通过不代表半年后仍无问题。
基本信息
| 适用平台 | Linux/macOS/Windows,可在 CI 中以容器方式运行 |
|---|---|
| 扫描对象 | OS 包、语言依赖(Java/Python/Go/Node 等)、部分配置问题 |
| 输出格式 | table(默认)、json、sarif 等 |
| 退出码 | 配合 --exit-code 在 CI 中阻断高危镜像 |
| 忽略机制 | trivy.yaml 或 .trivyignore 记录已评估项与原因 |
常用命令
常用命令
trivy image --severity HIGH,CRITICAL nginx:1.25 # 只看高危与严重
trivy image --format json --output result.json myapp:2026-10-12 # JSON 供平台消费
trivy image --exit-code 1 --severity CRITICAL myapp:latest # CI 卡点:有严重问题即失败
trivy image --ignore-unfixed myapp:latest # 只关注有修复版本的条目
trivy image --scanners vuln,misconfig myapp:latest # 同时扫描配置类问题典型使用场景
- CI 卡点:构建阶段扫描,高危问题不允许进入镜像仓库
- 存量体检:对仓库中已有镜像做周期重扫,发现新披露的问题
- 基础镜像选型:对比不同基础镜像的漏洞数量与修复及时性
- 上线前评审:提交扫描结果作为发布材料的一部分
- 依赖治理:从扫描结果反推需要升级的语言依赖与系统包
输出逐列读法
| 列 | 含义 | 关注点 |
|---|---|---|
| 严重级别 | CVE 的严重度 | HIGH/CRITICAL 优先,但需结合是否有修复版本 |
| 包名与安装版本 | 镜像内实际安装的组件与版本 | 对照修复版本判断能否升级 |
| 修复版本 | 含修复的版本号 | 为空表示暂无官方修复 |
| 标题与 CVE | 问题描述与编号 | 用于交叉核对发行版公告 |
镜像扫描结果随时间变化(新披露会改变结论),上线卡点之外还需对存量镜像做周期重扫,否则仓库里的老镜像会长期无人过问。
扫描通过不等于安全:运行时权限、挂载宿主目录、以 root 运行、暴露端口等风险不在镜像扫描的覆盖范围内,需要配合基线检查。