trivy 可直接扫描远程镜像、本地 tar 包或运行中容器文件系统,无需拉取镜像或依赖 docker daemon;支持 registry 认证复用、json 输出、漏洞等级过滤及本地缓存。

直接用 Trivy 扫描 Docker 镜像,不需要提前拉取镜像,也不依赖本地 Docker daemon —— 它能直接解析远程镜像 registry 中的层(比如 Docker Hub、私有 Harbor),也能扫描本地已保存的 tar 包或正在运行的容器文件系统。
安装 Trivy(推荐二进制方式)
官网提供一键安装脚本,适配主流 Linux 发行版:
curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sh -s -- -b /usr/local/bin
验证安装:
trivy --version
如遇权限问题,可改用 sudo 或将 /usr/local/bin 加入当前用户 PATH。
快速扫描公开镜像(无需 pull)
Trivy 支持直接扫描 registry 地址,例如扫描官方 nginx 镜像最新版:
trivy image nginx:latest
扫描指定仓库(如 Harbor 私有库):
trivy image myharbor.example.com/project/nginx:v1.24
若需认证,先用 docker login 登录,Trivy 会自动复用 ~/.docker/config.json 凭据。
扫描本地已导出的镜像 tar 包
适合离线环境或 CI 流水线中无网络访问 registry 的场景:
- 先用 docker save -o app.tar myapp:1.0 导出镜像
- 再执行:trivy image --input app.tar
注意:–input 参数必须显式指定,不能省略;Trivy 会解压 tar 并逐层分析软件包和配置。
输出结果解读与常用选项
默认输出含漏洞等级(CRITICAL/HIGH/MEDIUM)、CVE 编号、软件包名、修复建议版本。实用技巧:
- 只看高危以上漏洞:trivy image --severity CRITICAL,HIGH nginx
- 生成 JSON 报告便于集成:trivy image --format json --output report.json nginx
- 跳过基础系统漏洞(专注应用层):trivy image --skip-dirs /usr/lib/os-release nginx
- 启用缓存加速重复扫描:trivy image --cache-dir /tmp/trivy-cache nginx
不复杂但容易忽略:首次运行会自动下载漏洞数据库(约 200MB),后续扫描会复用本地缓存,除非手动加 --refresh。











