手把手教你用Trivy做Docker镜像漏洞检测扫描

为什么你需要做 Docker 镜像漏洞检测扫描

很多开发者直接从 Docker Hub 拉取镜像就跑起来,
但镜像里可能藏着已知漏洞——比如操作系统包(Ubuntu、
Alpine)或应用依赖存在 CVE(通用漏洞披露)。定期做 Docker 镜像漏洞检测扫描,
是容器安全最基本的一步。
本文用最流行的开源扫描工具 Trivy 带你实操,
全程敲命令就能搞定。

准备工作:装好 Docker 和 Trivy

1. 确保 Docker 已安装

如果你还没装 Docker,先执行:

sudo apt update && sudo apt install docker.io -y   # Ubuntu/Debian
sudo systemctl start docker
sudo systemctl enable docker

验证安装:docker --version 看到版本号即为成功。注意:
普通用户执行 docker 命令需要 sudo 或加入 docker 用户组(sudo usermod -aG docker $USER 后重新登录)。

2. 安装 Trivy

Trivy 官方提供一键安装脚本,推荐用以下命令(适用于 Linux 64 位):

curl -sfL https://raw.githubusercontent.com/aquasecurity/trivy/main/contrib/install.sh | sudo sh -s -- -b /usr/local/bin

验证安装:trivy --version 输出类似 Version: 0.56.0
如果网络慢,也可以从 GitHub Releases 手动下载二进制到 /usr/local/bin

实操:拉取一个镜像并执行漏洞扫描

1. 拉取目标镜像

以常见的 nginx:latest 为例:

docker pull nginx:latest

2. 运行第一次扫描

Trivy 会下载漏洞数据库(首次约 1~2 分钟),然后扫描镜像:

trivy image nginx:latest

输出解读:你会看到类似这样的表格:

Total: 87 (UNKNOWN: 0, LOW: 53, MEDIUM: 23, HIGH: 10, CRITICAL: 1)

每一行包含软件包名称、当前版本、修复版本、漏洞编号(CVE)和严重等级。
重点关注 HIGH 和 CRITICAL 的漏洞。

3. 只输出高危漏洞(可选)

trivy image --severity HIGH,CRITICAL nginx:latest

4. 保存报告到文件

trivy image --format json -o scan-result.json nginx:latest

以后可以用 cat scan-result.json 查看详细列表。

避坑指南:新手最易翻车的 4 个地方

  • 数据库更新失败:Trivy 首次会从 GitHub 下载漏洞库。如果服务器无法访问 ghcr.io,可以配置镜像加速或手动下载离线包。解决方案:执行 trivy image --skip-db-update 跳过自动更新,但前提是你已提前备好数据库。
  • 扫描速度极慢:常见于大镜像(如 Python 开发镜像)。可以用 --scanners vuln 只扫漏洞,不扫密钥和配置。
  • 误报率:某些漏洞可能所在的包在实际运行中未被加载。Trivy 已经做了噪声过滤,但建议对结果人工复核。
  • 权限问题:如果 Trivy 报告 permission denied,确认 docker 和 trivy 脚本是否用 sudo 执行。

效果验证:如何确认扫描是否靠谱

1. 对比已知漏洞数据库

NVD 或容器镜像官方公告(如 nginx 的 Release Notes)查找近期 CVE,看 Trivy 是否报出。
例如 2024 年 nginx 1.25.x 存在某个 DoS 漏洞,如果 Trivy 报告但你镜像更新到了 1.26.0(已修复),那说明扫描结果正确。

2. 修复后重新扫描

docker pull nginx:latest 更新到最新版,再次运行 trivy image nginx:latest,高危漏洞数量应大幅下降。

3. 集成到 CI/CD(进阶)

在 GitLab CI 中加一行 trivy image --exit-code 1 --severity HIGH,CRITICAL $IMAGE
一旦发现高危漏洞就直接阻断构建。

写在最后:Docker 镜像漏洞检测扫描不是一次性工作,建议每次拉取新镜像或更新基础镜像后都扫一遍。
Trivy 免费、轻量、社区活跃,足够日常使用。
如果你在扫描时遇到奇怪的报错,优先检查网络和权限,再对照本文的避坑部分排查。

分享到:
上一篇
Docker容器备份迁移跨主机:从导出到导入的完整实操
下一篇
零基础K3s轻量K8s集群搭建教程:3分钟上手
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意