1. docker distribution目录结构
distribution
├── bin
可执行文件
├── cmd
运行registry的主函数所在的目录
│ ├── digest
│ ├── registry
│ └── registry-api-descriptor-template
├── configuration
与registry运行相关的配置,主要是由yml文件加载来的
├── context
上下文相关相关的结构,主要是httpContext
├── contrib
与其他项目的一些结合
│ ├── apache
│ ├── ceph
│ ├── compose
│ │ └── nginx
│ └── docker-integration
│ └── nginx
├── digest
产生在registry中要用到的digest,以及与digest相关的函数
├── docs
│ ├── images
│ ├── osx
│ ├── spec
│ │ └── auth
│ └── storage-drivers
├── Godeps
包依赖管理工具
│ └── _workspace
│ └── src
├── health
主要是检查一些连接,链接头等的正确性
│ ├── api
│ └── checks
├── manifest
定义了registry中描述image元数据的manifest结构体
│ └── schema1
├── notifications
主要是服务器监听客户端连接服务以及针对于一些事件的函数
├── bridge.go
向sink写记录的事件监听器
├── bridge_test.go
├── endpoint.go
endpoint是一个接收事件的集合体,提供http服务,一个版本的registry对应一个endpoint,现在用的是v2
├── event.go
描述了registry可能发生的事件,也包含了事件的目标
├── event_test.go
├── http.go
是一个提供http服务的sink,服务于监听http服务的endpoint
├── http_test.go
├── listener.go
监听从docker传过来的blob、manifest等的服务的结构以及函数
├── listener_test.go
├── metrics.go
endpoint处理的事件状态
├── sinks.go
sink迎来介绍和发送events,将接收到的events分派到相应的endpoints
└── sinks_test.go
├── project
│ ├── dev-image
│ └── hooks
├── registry
最重要的一个包,其下的registry.go文件读取yml配置文件、配置registry并提供http服务
│ ├── api
包括server提供http服务需要用到的一些工具包
│ │ ├── errcode
│ │ └── v2
描述registry json http需要用到的route、urls等,是server需要用到的
│ ├── auth
判断listener接受的request是否是通过验证的
│ │ ├── htpasswd
│ │ ├── silly
│ │ └── token
│ ├── client
│ │ ├── auth
│ │ └── transport
│ ├── handlers
与registry相关的各组件的结构定义以及相关句柄函数实现,比如app.go提供registry的handlers.App结构定义及相关函数,blob.go与blob相关的函数
│ ├── listener
为registry提供连接Accept和监听listener服务
│ ├── middleware
reigistry和repository的中间件
│ │ ├── registry
│ │ └── repository
│ ├── proxy
**
│ │ └── scheduler
│ └── storage
与registry应用的镜像存储相关的包,包括存储驱动类型、存储cache以及存储中间件等
│ ├── cache
│ └── driver
├── testutil
测试工具包
├── uuid
Universally Unique Identifier用于产生通用唯一识别码
└── version
显示版本信息
2. 作者介绍
梁明远,国防科大并行与分布式计算国家重点实验室(PDL)应届研究生,14年入学伊始便开始接触docker,准备在余下的读研时间在docker相关开源社区贡献自己的代码,毕业后准备继续从事该方面研究。邮箱:liangmingyuanneo@gmail.com