一、代码整体目录结构:
├── cmd // 程序的入口
│ ├── digest // digest的main函数入口
│ ├── registry // registry的main函数入口
│ └── registry-api-descriptor-template //
├── configuration // 解析配置文件,configuration.go用于读取并解析配置文件
├── context // 用于定义和处理registry启动执行时的上下文环境context,主要指httpcontext
├── contrib
│ ├── apache
│ ├── compose
│ │ └── nginx
│ ├── docker-integration
│ │ ├── malevolent-certs
│ │ ├── nginx
│ │ │ ├── ssl
│ │ │ └── v1
│ │ ├── tokenserver
│ │ │ └── certs
│ │ └── tokenserver-oauth
│ │ └── certs
│ └── token-server
├── digestset // 产生digest
├── docs
│ └── spec
│ └── auth
├── health
│ ├── api
│ └── checks
├── manifest // manifest,定义了schema1、schemal2两类manifest的结构体
│ ├── manifestlist
│ ├── schema1
│ └── schema2
├── notifications // 监听客户端连接,主要包括webhook notification
├── project
│ ├── dev-image
│ └── hooks
├── reference
├── registry // registry源码的主体部分
│ ├── api // 提供http服务需要用到的一些工具包
│ │ ├── errcode
│ │ └── v2
│ ├── auth // registry的auth token管理,可在配置文件中配置3种:htpasswd, silly, token
│ │ ├── htpasswd
│ │ ├── silly
│ │ └── token // 使用token认证
│ ├── client
│ │ ├── auth
│ │ │ └── challenge
│ │ └── transport
│ ├── handlers // 处理各类http请求的handler,如blob、manifest、catalog等
│ ├── listener
│ ├── middleware