Clair介绍和源码分析

本文详述了Clair的架构,包括Fetcher、Detector、Image Format、Notification Hook和Database等模块。阐述了如何编译和使用Clair,以及如何通过docker-compose部署。重点解析了Clair的main方法和Post Layer API Workflow,分析了worker如何处理Layer检测,并介绍了源码中涉及的关键流程和接口调用。
摘要由CSDN通过智能技术生成

Clair源码分析

本文主要描述Clair架构、编译、部署、源码分析等内容。

Clair架构

这里写图片描述
Clair主要包括以下模块:

  • 获取器(Fetcher)- 从公共源收集漏洞数据

  • 检测器(Detector)- 指出容器镜像中包含的Feature

  • 容器格式器(Image Format)- Clair已知的容器镜像格式,包括Docker,ACI

  • 通知钩子(Notification Hook)- 当新的漏洞被发现时或者已经存在的漏洞发生改变时通知用户/机器

  • 数据库(Databases)- 存储容器中各个层以及漏洞

  • Worker - 每个Post Layer都会启动一个worker进行Layer Detect

Clair源码编译和使用

  • 启动一个pgsql容器作为Clair的Backend DB

    docker run -p 5432:5432 -e POSTGRES_PASSWORD=passw0rd postgres:latest

  • 从源码编译clair

    go get github.com/coreos/clair

    go install github.com/coreos/clair/cmd/clair

  • 配置Clair的Backend DB (vim /etc/clair/config.yaml)

这里写图片描述

  • 启动clair

    clair -config config.yaml

  • 安装并启动本地镜像分析工具: analyze-local-images

    go get -u github.com/coreos/clair/contrib/analyze-local-images

  • 执行镜像扫描

    analyze-local-images -endpoint “http://10.199.244.27:6060” -my-address “10.199.244.27” vipdocker-f9nub.vclound.com/centos:6.6

-endpoint配置clair部署的主机IP

docker-compose部署Clair

通过docker-compose部署clair的yaml文件内容如下:

version: '2'
services:
  postgresql:
    image: /libary/postgres:0.1
    restart: always
    ports:
      - 5432:5432
    volumes:
      - /docker/postgresql/data:/var/lib/postgresql/data
  clair:
    image: libary/clair:0.2
    depends_on:
      - postgresql
    ports:
      - 6060:6060
      - 6061:6061
    environment:
      - POSTGRESQL_HOST=postgresql

Clair源码分析

Clair内部各个模块之间的关系如下:
这里写图片描述

以Rest API请求为入口,相关模块的流程大致如下:
这里写图片描述

下面将具体进行入口和Post Layer接口的源码进行分析。

main方法

/cmd/clair/main.go

func main() {
    ...
    // 加载配置文件
    config, err := config.Load(*flagConfigPath)
    ...
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值