
Trivy("tri"发音如"trigger","vy"发音如"envy")是一款简单且全面的容器漏洞扫描工具。它能够检测操作系统包(如Alpine、Red Hat Universal Base Image、RHEL、CentOS、Debian、Ubuntu等)和应用依赖(如Bundler、Composer、Pipenv、Poetry、npm、yarn、Cargo等)的漏洞。Trivy易于使用,仅需安装二进制文件即可开始扫描,扫描时只需指定容器镜像名称。
Trivy特别适合在持续集成(CI)流程中使用,可在推送容器镜像至仓库前轻松扫描本地镜像,帮助开发和运维团队在早期发现并修复漏洞。
/etc/yum.repos.d/trivy.repo:
ini[trivy] name=Trivy repository baseurl=https://knqyf263.github.io/trivy-repo/rpm/releases/$releasever/$basearch/ gpgcheck=0 enabled=1
或直接安装RPM包:bashsudo yum -y update sudo yum -y install trivy
bashrpm -ivh https://github.com/knqyf263/trivy/releases/download/v0.0.15/trivy_0.0.15_Linux-64bit.rpm
[CODE_NAME]为系统代号(可通过lsb_release -c获取,如wheezy、jessie、stretch、buster、trusty、xenial、bionic):
或直接安装DEB包:bashsudo apt-get install apt-transport-https gnupg wget -qO - https://knqyf263.github.io/trivy-repo/deb/public.key | sudo apt-key add - echo "deb https://knqyf263.github.io/trivy-repo/deb [CODE_NAME] main" | sudo tee -a /etc/apt/sources.list.d/trivy.list sudo apt-get update sudo apt-get install trivy
bashsudo apt-get install rpm wget https://github.com/knqyf263/trivy/releases/download/v0.0.15/trivy_0.0.15_Linux-64bit.deb sudo dpkg -i trivy_0.0.15_Linux-64bit.deb
通过AUR安装:
bashpikaur -Sy trivy-bin # 或 yay -Sy trivy-bin
bashbrew install knqyf263/trivy/trivy
从https://github.com/knqyf263/trivy/releases/latest%E4%B8%8B%E8%BD%BD%E5%AF%B9%E5%BA%94%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F/%E6%9E%B6%E6%9E%84%E7%9A%84%E5%BD%92%E6%A1%A3%E6%96%87%E4%BB%B6%EF%BC%8C%E8%A7%A3%E5%8E%8B%E5%90%8E%E5%B0%86%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6%E6%94%BE%E5%85%A5%60$PATH%60%E7%9B%AE%E5%BD%95%EF%BC%88%E5%A6%82Unix%E7%B3%BB%E7%BB%9F%E7%9A%84%60/usr/local/bin%60%EF%BC%89%EF%BC%8C%E5%B9%B6%E7%A1%AE%E4%BF%9D%E5%85%B7%E6%9C%89%E6%89%A7%E8%A1%8C%E6%9D%83%E9%99%90%E3%80%82
扫描RHEL/CentOS镜像需安装
rpm命令。
bashmkdir -p $GOPATH/src/github.com/knqyf263 cd $GOPATH/src/github.com/knqyf263 git clone https://github.com/knqyf263/trivy cd trivy/cmd/trivy/ export GO111MODULE=on go install
指定镜像名称即可扫描:
bashtrivy python:3.4-alpine
扫描远程镜像
bashdocker run --rm -v [本地缓存目录]:/root/.cache/ knqyf263/trivy [镜像名称]
macOS示例:
bashdocker run --rm -v $HOME/Library/Caches:/root/.cache/ knqyf263/trivy python:3.4-alpine
扫描本地镜像
需挂载Docker socket:
bashdocker run --rm -v /var/run/docker.sock:/var/run/docker.sock \ -v $HOME/Library/Caches:/root/.cache/ knqyf263/trivy python:3.4-alpine
若运行出错,请拉取最新版本镜像:
docker pull knqyf263/trivy
| 参数 | 说明 | 示例 |
|---|---|---|
--severity | 按严重级别过滤漏洞(逗号分隔,可选:UNKNOWN,LOW,MEDIUM,HIGH,CRITICAL) | --severity HIGH,CRITICAL |
--format | 输出格式(table/json) | --format json |
--output | 输出结果至文件 | --output result.json |
--exit-code | 发现漏洞时的退出码(默认0) | --exit-code 1 |
--no-update | 跳过漏洞数据库更新 | --no-update |
--ignore-unfixed | 忽略未修复的漏洞 | --ignore-unfixed |
--vuln-type | 按漏洞类型过滤(os/app) | --vuln-type app |
--ignore-policy | 指定忽略漏洞的策略文件 | --ignore-policy .trivyignore |
--clear-cache | 清除镜像缓存 | --clear-cache |
--reset | 重置所有缓存和数据库 | --reset |
扫描镜像
bashtrivy knqyf263/test-image:1.2.3
扫描镜像文件
bashtrivy image --input path/to/image.tar
保存结果为JSON格式
bashtrivy --format json --output result.json python:3.4-alpine
按严重级别过滤漏洞
仅显示HIGH和CRITICAL级别漏洞:
bashtrivy --severity HIGH,CRITICAL python:3.4-alpine
按漏洞类型过滤
仅扫描应用依赖漏洞:
bashtrivy --vuln-type app python:3.4-alpine
跳过漏洞数据库更新
bashtrivy --no-update python:3.4-alpine
忽略未修复的漏洞
bashtrivy --ignore-unfixed python:3.4-alpine
指定退出码
发现CRITICAL漏洞时退出码设为2:
bashtrivy --exit-code 2 --severity CRITICAL python:3.4-alpine
忽略指定漏洞
创建.trivyignore文件:
# 忽略CVE-2019-1543 CVE-2019-1543 # 忽略rails-html-sanitizer的所有漏洞 rails-html-sanitizer
执行扫描:
bashtrivy --ignore-policy .trivyignore python:3.4-alpine
清除镜像缓存
bashtrivy --clear-cache
重置所有缓存和数据库
bashtrivy --reset
在.travis.yml中添加:
yamllanguage: bash services: - docker before_script: - docker pull python:3.4-alpine - curl -sfL https://raw.githubusercontent.com/knqyf263/trivy/master/contrib/install.sh | sh -s -- -b /usr/local/bin script: - trivy --exit-code 1 --severity HIGH,CRITICAL python:3.4-alpine
在.circleci/config.yml中添加:
yamlversion: 2.1 jobs: scan: docker: - image: circleci/golang:1.14 steps: - checkout - run: name: Install Trivy command: | curl -sfL https://raw.githubusercontent.com/knqyf263/trivy/master/contrib/install.sh | sh -s -- -b /usr/local/bin - run: name: Scan image command: trivy --exit-code 1 --severity HIGH,CRITICAL python:3.4-alpine workflows: scan_workflow: jobs: - scan
如需扫描私有仓库镜像,需先登录仓库:
bash# Docker CLI登录 docker login private.registry.com # 或设置环境变量 export TRIVY_USERNAME=username export TRIVY_PASSWORD=password trivy private.registry.com/image:tag
Trivy通过解析操作系统的包管理数据库(如Alpine的apk、Debian的dpkg、RHEL的rpm)检测已安装包的漏洞,并与官方CVE数据库比对。
Trivy扫描应用依赖文件(如Gemfile.lock、package-lock.json、Cargo.lock、composer.lock等),提取依赖版本信息,与对应语言的安全数据库(如RubySec、npm audit、RustSec等)比对,发现应用层漏洞。
/usr/local/bin或/opt/homebrew/bin)在$PATH中。Q:扫描速度慢?
A:首次扫描需下载漏洞数据库,后续扫描会使用缓存;可添加--no-update跳过数据库更新(适用于频繁扫描场景)。
Q:如何更新Trivy?
A:根据安装方式选择:RPM/DEB使用包管理器更新,Homebrew执行brew upgrade trivy,二进制包需手动下载新版本。
Q:支持Windows系统吗?
A:支持,可从GitHub Releases下载Windows二进制包。
Trivy相比其他扫描工具(如Clair、Anchore Engine等)具有以下优势:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务