Dockle:容器镜像安全检查工具
一款开源的容器镜像安全审计工具,只需指定镜像名即可按 CIS 基准检查最佳实践与安全隐患。
- 浏览
- 4
- 访问
- 0
- 下载
- 0
- 版本
- v0.4.15
- 平台
- Windows、macOS、Linux
详细介绍
项目简介
Dockle 是一个用 Go 编写的容器镜像 Linter,目标是帮助开发者构建符合最佳实践、更安全的 Docker 镜像。它只需要指定镜像名称即可运行,检查项覆盖 CIS Benchmarks,输出的结果带有 FATAL / WARN / INFO / IGNORE 等级别,便于快速定位问题。
项目主页:https://containers.goodwith.tech/

与其他工具的定位差异(摘自 README 对比表):
| Dockle | Hadolint | Docker Bench for Security | Clair | |
|---|---|---|---|---|
| 检查对象 | 镜像 | Dockerfile | 宿主机 / Docker Daemon / 镜像 / 容器运行时 | 镜像 |
| 运行方式 | 二进制 | 二进制 | Shell 脚本 | 二进制 |
| 依赖 | 无 | 无 | 需要若干依赖 | 无 |
| 适合 CI | ✓ | ✓ | x | x |
| 用途 | 安全审计 + Dockerfile Lint | Dockerfile Lint | 安全审计 + Dockerfile Lint | 漏洞扫描 |
主要功能
- 检测容器镜像中的安全问题
- 帮助编写符合最佳实践的 Dockerfile
- 支持 CIS Benchmarks 检查项,准确度较高
- 使用简单:只需给出镜像名与 tag
- 适合 DevSecOps 流程,可接入 Travis CI、CircleCI、Jenkins、GitLab CI 等
- 支持将结果输出为 JSON 或 SARIF 格式
- 可自定义退出码与退出级别、忽略指定检查项,也可接受或拒绝可疑的环境变量、文件与文件扩展名
部分检查项示例(来自 README 的扫描输出):
CIS-DI-0009:Dockerfile 中应使用 COPY 而不是 ADDCIS-DI-0010:不要在环境变量或文件中保存凭据DKL-DI-0005:清理 apt-get 缓存DKL-LI-0001:避免空密码CIS-DI-0001:为容器创建非 root 用户CIS-DI-0008:确认 setuid/setgid 文件的安全性
各检查项的详细说明见 CHECKPOINT.md。
安装与使用
Homebrew(macOS / Linux 与 WSL)
$ brew install goodwithtech/r/dockle
$ dockle [YOUR_IMAGE_NAME]
RHEL/CentOS
VERSION=$(
curl --silent "https://api.github.com/repos/goodwithtech/dockle/releases/latest" | \
grep '"tag_name":' | \
sed -E 's/.*"v([^"]+)".*/\1/' \
) && rpm -ivh https://github.com/goodwithtech/dockle/releases/download/v${VERSION}/dockle_${VERSION}_Linux-64bit.rpm
Debian/Ubuntu
VERSION=$(
curl --silent "https://api.github.com/repos/goodwithtech/dockle/releases/latest" | \
grep '"tag_name":' | \
sed -E 's/.*"v([^"]+)".*/\1/' \
) && curl -L -o dockle.deb https://github.com/goodwithtech/dockle/releases/download/v${VERSION}/dockle_${VERSION}_Linux-64bit.deb
$ sudo dpkg -i dockle.deb && rm dockle.deb
Arch Linux
可以从 AUR 的 dockle 或 dockle-bin 包安装:
git clone https://aur.archlinux.org/dockle-bin.git
cd dockle-bin
makepkg -sri
Windows
VERSION=$(
curl --silent "https://api.github.com/repos/goodwithtech/dockle/releases/latest" | \
grep '"tag_name":' | \
sed -E 's/.*"v([^"]+)".*/\1/' \
) && curl -L -o dockle.zip https://github.com/goodwithtech/dockle/releases/download/v${VERSION}/dockle_${VERSION}_Windows-64bit.zip
$ unzip dockle.zip && rm dockle.zip
$ ./dockle.exe [IMAGE_NAME]
PowerShell 7
if (((Invoke-WebRequest "https://api.github.com/repos/goodwithtech/dockle/releases/latest").Content) -match '"tag_name":"v(?<ver>[^"]+)"') {
$VERSION=$Matches.ver &&
Invoke-WebRequest "https://github.com/goodwithtech/dockle/releases/download/v${VERSION}/dockle_${VERSION}_Windows-64bit.zip" -OutFile dockle.zip &&
Expand-Archive dockle.zip && Remove-Item dockle.zip }
二进制包
从 releases 页面 下载对应系统与架构的压缩包,解压后把二进制文件放进 $PATH(如 /usr/local/bin)。注意确认带有可执行权限(chmod +x dockle)。
asdf
asdf plugin add dockle
asdf list-all dockle
asdf install dockle latest
asdf global dockle latest
dockle --version
mise
mise ls-remote dockle
mise install dockle@latest
mise use -g dockle@latest
dockle --version
从源码构建
$ GO111MODULE=off go get github.com/goodwithtech/dockle/cmd/dockle
$ cd $GOPATH/src/github.com/goodwithtech/dockle && GO111MODULE=on go build -o $GOPATH/bin/dockle cmd/dockle/main.go
使用 Docker
Docker Hub 上提供了 Dockle 镜像,可以先试用再安装:
$ VERSION=$(
curl --silent "https://api.github.com/repos/goodwithtech/dockle/releases/latest" | \
grep '"tag_name":' | \
sed -E 's/.*"v([^"]+)".*/\1/' \
) && docker run --rm -v /var/run/docker.sock:/var/run/docker.sock \
goodwithtech/dockle:v${VERSION} [YOUR_IMAGE_NAME]
只有在需要扫描宿主机上的镜像时才需要挂载 -v /var/run/docker.sock:/var/run/docker.sock。
基本用法
直接指定镜像名(含 tag)即可:
$ dockle [YOUR_IMAGE_NAME]
README 的 Common Examples 中还给出了扫描镜像文件、输出 JSON / SARIF、指定退出码与退出级别、忽略指定检查项、接受或拒绝可疑环境变量 / 文件 / 文件扩展名等用法示例。
注意事项
- 通过二进制包安装时,务必确认执行权限已开启。
- 使用 Docker 方式扫描宿主机镜像时,需要额外挂载
docker.sock。 - 私有镜像仓库(Docker Hub、Amazon ECR、GCR、自建 BasicAuth 仓库)的授权配置,请参考 README 的 Continuous Integration 章节。
- 本项目使用 Apache-2.0 许可证。
本作品整理自 GitHub 开源项目 goodwithtech/dockle,原作者 @goodwithtech,许可证 Apache-2.0。中文介绍由 AI 根据项目 README 整理,以原仓库为准。
更新记录
- v0.4.15当前版本
将 .env 文件加入可疑文件列表,新增敏感文件与敏感文件扩展名的可配置参数,对可疑环境变量做脱敏处理,移除 CVE-2024-41110 检查,并更新发布构建与 goreleaser 配置。
评论