跳到正文
发现
Dockle:容器镜像安全检查工具
命令行工具开发者工具

Dockle:容器镜像安全检查工具

一款开源的容器镜像安全审计工具,只需指定镜像名即可按 CIS 基准检查最佳实践与安全隐患。

admin
发布于 2026-10-28
浏览
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 而不是 ADD
  • CIS-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 整理,以原仓库为准。

更新记录

  1. v0.4.15当前版本

    将 .env 文件加入可疑文件列表,新增敏感文件与敏感文件扩展名的可配置参数,对可疑环境变量做脱敏处理,移除 CVE-2024-41110 检查,并更新发布构建与 goreleaser 配置。

评论