使用Clair进行Docker静态分析启动报错及扫描失败问题求助
Clair部署报错问题排查及修复方案
1 启动失败原因&修复
核心错误原因
你使用的Clair v4.3.4版本命令行参数与旧版不兼容,配置的启动参数不存在,导致服务启动后立刻退出:
- 日志明确提示
flag provided but not defined: -log-level,v4版本没有--log-level、--config两个命令行参数,日志级别需要写入配置文件,配置文件对应的参数为--conf - Postgres的重复键报错是之前Clair异常退出遗留的锁记录,属于启动失败后的次生问题
修复步骤
- 修改docker-compose.yml中clair服务的command配置,替换为:
command: [--conf, /config/config.yml]
- 若需要开启debug日志,打开挂载的
./docker-compose-data/clair-config/config.yml文件,新增配置项log_level: debug - 清空残留的postgres脏数据,执行:
rm -rf ./docker-compose-data/postgres-data/*
- 重新执行
docker-compose up -d启动服务,等待3-5分钟让Clair完成首次漏洞库同步
2 扫描报错原因&修复
错误原因
扫描时报lookup clair: Try again是因为clair服务一直启动失败,docker-compose内部dns无法解析到正常运行的clair服务,自然无法建立连接。
额外兼容性提示
你当前使用的jgsqware/clairctl:latest仅适配Clair v2版本,与Clair v4的API不兼容,启动成功后扫描仍会出现接口不存在报错,可选择两种方案规避:
- 方案1:将Clair镜像替换为v2版本,如
quay.io/coreos/clair:v2.1.8,适配现有clairctl - 方案2:更换适配Clair v4的扫描工具,如grype、trivy
内容的提问来源于stack exchange,提问作者Georgy
相关产品推荐
相关产品推荐

