本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

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:
[trivy] name=Trivy repository baseurl=[***] gpgcheck=0 enabled=1
或直接安装RPM包:sudo yum -y update sudo yum -y install trivy
rpm -ivh [***]
[CODE_NAME]为系统代号(可通过lsb_release -c获取,如wheezy、jessie、stretch、buster、trusty、xenial、bionic):
或直接安装DEB包:sudo apt-get install apt-transport-https gnupg wget -qO - [***] | sudo apt-key add - echo "deb [***] [CODE_NAME] main" | sudo tee -a /etc/apt/sources.list.d/trivy.list sudo apt-get update sudo apt-get install trivy
sudo apt-get install rpm wget [***] sudo dpkg -i trivy_0.0.15_Linux-64bit.deb
通过AUR安装:
pikaur -Sy trivy-bin # 或 yay -Sy trivy-bin
brew install knqyf263/trivy/trivy
从GitHub Releases下载对应操作系统/架构的归档文件,解压后将二进制文件放入$PATH目录(如Unix系统的/usr/local/bin),并确保具有执行权限。
扫描RHEL/CentOS镜像需安装
rpm命令。
mkdir -p $GOPATH/src/github.com/knqyf263 cd $GOPATH/src/github.com/knqyf263 git clone [***] cd trivy/cmd/trivy/ export GO111MODULE=on go install
指定镜像名称即可扫描:
trivy python:3.4-alpine
docker run --rm -v [本地缓存目录]:/root/.cache/ knqyf263/trivy [镜像名称]
macOS示例:
docker run --rm -v $HOME/Library/Caches:/root/.cache/ knqyf263/trivy python:3.4-alpine
需挂载Docker socket:
docker 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 |
trivy knqyf263/test-image:1.2.3
trivy image --input path/to/image.tar
trivy --format json --output result.json python:3.4-alpine
仅显示HIGH和CRITICAL级别漏洞:
trivy --severity HIGH,CRITICAL python:3.4-alpine
仅扫描应用依赖漏洞:
trivy --vuln-type app python:3.4-alpine
trivy --no-update python:3.4-alpine
trivy --ignore-unfixed python:3.4-alpine
发现CRITICAL漏洞时退出码设为2:
trivy --exit-code 2 --severity CRITICAL python:3.4-alpine
创建.trivyignore文件:
# 忽略CVE-2019-1543 CVE-2019-1543 # 忽略rails-html-sanitizer的所有漏洞 rails-html-sanitizer
执行扫描:
trivy --ignore-policy .trivyignore python:3.4-alpine
trivy --clear-cache
trivy --reset
在.travis.yml中添加:
language: bash services: - docker before_script: - docker pull python:3.4-alpine - curl -sfL [***] | sh -s -- -b /usr/local/bin script: - trivy --exit-code 1 --severity HIGH,CRITICAL python:3.4-alpine
在.circleci/config.yml中添加:
version: 2.1 jobs: scan: docker: - image: circleci/golang:1.14 steps: - checkout - run: name: Install Trivy command: | curl -sfL [***] | 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
如需扫描私有仓库镜像,需先登录仓库:
# 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 Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429