视频配套仓库:停止挂载 docker.sock — 无需交出 Root 权限即可运行 Trivy —(灵感来自 CVE-2026-33634)
https://www.youtube.com/watch?v=xLTYzfPY3xI
本仓库包含视频中使用的示例 Web 应用和 Claude Code 提示词,用于演示:
/var/run/docker.sock 挂载到容器中,会让该容器获得对宿主机的 Root 级访问权限docker save + 只读 tar 绑定挂载,而不是 Docker Socket APImy-calc-app/一个 Next.js/React 计算器应用,带有生产环境多阶段 Dockerfile(node:20-alpine,非 Root 用户)。这是视频中由 Trivy 扫描的应用。
构建并运行:
cd my-calc-app
docker build -t my-calc-app:prod .
docker run -p 3000:3000 my-calc-app:prod
应用将在 http://localhost:3000 上可用。
注意: 文件 public/secret.txt 包含一个虚拟的 RSA 私钥。这是有意为之的 — 它的存在是为了让 Trivy 的密钥扫描器在视频的第一次扫描中捕获它,从而演示 Trivy 的密钥检测能力。它不是一个真实的密钥。
prompts/trivy-report-for-prod-docker-prompt.md视频中用于分析 Trivy JSON 扫描输出的 Claude Code 提示词。它按位置(应用依赖 vs. 操作系统软件包 vs. npm/yarn 内部组件)对漏洞进行分类,并给出发布/不发布的结论。
要将其用于您自己的镜像:
# 1. 将您的镜像导出为 tar 文件
docker save my-calc-app:prod -o my-calc-app-prod.tar
# 2. 对 tar 文件运行 Trivy(无需 docker.sock)
docker run --rm \
-v trivy-cache:/root/.cache/ \
-v ./my-calc-app-prod.tar:/image.tar:ro \
aquasec/trivy:latest image --input /image.tar -f json > report.json
# 3. 让 Claude Code 分析报告
claude -p "$(cat prompts/trivy-report-for-prod-docker-prompt.md) report.json"
不要这样做:
# 通过 Docker API 将容器的完整 Root 访问权限授予宿主机
docker run -v /var/run/docker.sock:/var/run/docker.sock aquasec/trivy image my-app:latest
请这样做:
# 1. 将镜像保存为 tar 文件
docker save my-calc-app:prod -o my-calc-app-prod.tar
# 2. 仅绑定挂载 tar 文件(只读),不涉及 Socket 访问
docker run --rm \
-v trivy-cache:/root/.cache/ \
-v ./my-calc-app-prod.tar:/image.tar:ro \
aquasec/trivy@sha256:<pin-to-digest> image --input /image.tar -f json > report.json
使用 SHA256 摘要固定 Trivy 镜像,而不是使用标签,以抵御类似 CVE-2026-33634 的供应链攻击。