
Klar是一个简单工具,用于通过Clair分析存储在私有或公共Docker镜像仓库中的镜像以检测安全漏洞。它作为客户端协调Docker镜像仓库和Clair之间的镜像检查,支持Clair API v1和v3,是一个无需依赖的单二进制文件,通过环境变量进行配置。
从https://github.com/optiopay/klar/releases/%E4%B8%8B%E8%BD%BD%E6%9C%80%E6%96%B0%E7%89%88%E6%9C%AC%EF%BC%88%E6%94%AF%E6%8C%81OSX%E5%92%8CLinux%EF%BC%89%EF%BC%8C%E5%B0%86%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6%E6%94%BE%E5%85%A5%60PATH%60%E7%8E%AF%E5%A2%83%E5%8F%98%E9%87%8F%E4%B8%AD%E7%9A%84%E7%9B%AE%E5%BD%95%E5%B9%B6%E8%B5%8B%E4%BA%88%E6%89%A7%E8%A1%8C%E6%9D%83%E9%99%90%E3%80%82
确保已安装并配置Go语言编译器(参考Go安装文档),执行以下命令:
bashgo get github.com/optiopay/klar
确保Go二进制文件目录已添加到PATH(例如:export PATH=$PATH:/usr/local/go/bin)。
0:检测到的高严重级别漏洞数量小于或等于阈值1:检测到的高严重级别漏洞数量超过阈值2:发生错误导致无法分析镜像| 环境变量 | 描述 | 默认值 |
|---|---|---|
CLAIR_ADDR | Clair服务器地址,格式为protocol://host:port,支持基本认证 | http://localhost:6060 |
CLAIR_OUTPUT | 漏洞严重级别阈值,支持:Unknown、Negligible、Low、Medium、High、Critical、Defcon1 | Unknown |
CLAIR_THRESHOLD | 可容忍的输出漏洞数量,超过此数量返回1 | 0 |
CLAIR_TIMEOUT | 扫描超时时间(分钟) | 1 |
DOCKER_USER | Docker镜像仓库账户名 | - |
DOCKER_PASSWORD | Docker镜像仓库账户密码 | - |
DOCKER_TOKEN | Docker镜像仓库账户令牌(可替代用户名和密码) | - |
DOCKER_INSECURE | 允许访问具有不安全SSL证书的仓库 | false |
DOCKER_TIMEOUT | 从Docker仓库获取镜像层的超时时间(分钟) | - |
DOCKER_PLATFORM_OS | 镜像操作系统(仅ManifestList时需设置) | linux |
DOCKER_PLATFORM_ARCH | 镜像架构(仅ManifestList时需设置) | amd64 |
REGISTRY_INSECURE | 允许访问HTTP-only的不安全仓库 | false |
JSON_OUTPUT | 输出JSON格式而非纯文本 | false |
FORMAT_OUTPUT | 漏洞输出格式:standard、json、table(JSON_OUTPUT为true时忽略) | standard |
WHITELIST_FILE | CVE白名单YAML文件路径 | - |
IGNORE_UNFIXED | 不将未修复的漏洞计入阈值 | - |
bashCLAIR_ADDR=localhost CLAIR_OUTPUT=High CLAIR_THRESHOLD=10 DOCKER_USER=docker DOCKER_PASSWORD=secret klar postgres:9.5.1
设置KLAR_TRACE环境变量为true可启用详细日志:
bashexport KLAR_TRACE=true
$GOPATH/src/github.com/optiopay/klarbashCGO_ENABLED=0 go build -a -installsuffix cgo .
bashGOOS=linux go build .
bashdocker build -t klar .
创建环境变量文件my-klar.env:
envCLAIR_ADDR=localhost CLAIR_OUTPUT=High CLAIR_THRESHOLD=10 DOCKER_USER=docker DOCKER_PASSWORD=secret
运行容器:
bashdocker run --env-file=my-klar.env klar postgres:9.5.1
ECR需通过aws ecr get-login获取临时凭证(有效期12小时),示例脚本:
bashDOCKER_LOGIN=`aws ecr get-login --no-include-email` PASSWORD=`echo $DOCKER_LOGIN | cut -d' ' -f6` REGISTRY=`echo $DOCKER_LOGIN | cut -d' ' -f7 | sed "s/https:\/\///"` DOCKER_USER=AWS DOCKER_PASSWORD=${PASSWORD} ./klar ${REGISTRY}/my-image
使用应用默认凭证(GCP环境中有效):
直接运行:
bashDOCKER_USER=oauth2accesstoken DOCKER_PASSWORD="$(gcloud auth application-default print-access-token)"
通过Docker运行:
bashDOCKER_USER=oauth2accesstoken DOCKER_PASSWORD="$(docker run --rm google/cloud-sdk:alpine gcloud auth application-default print-access-token)"
以下是 cleveritcz/registry 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。



探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务