|
@@ -1,2 +1,59 @@
|
|
# docker
|
|
# docker
|
|
|
|
|
|
|
|
+原项目docker/docker 已经重定向到 https://github.com/moby/moby
|
|
|
|
+
|
|
|
|
+## Docker vs Moby
|
|
|
|
+
|
|
|
|
+Moby 项目中的组件和工具最初是 Docker 和社区为 Docker 项目构建的开源组件。Docker 致力于使用 Moby 作为 Docker 产品的上游。 类似于VSCode开源版本为 Code-OSS。
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+## 代码结构
|
|
|
|
+Docker 总体上是用的是Client/Server模式,所有的命令都可以通过 RESTful 接口传递。
|
|
|
|
+
|
|
|
|
+整个 Docker 软件的架构中可以分成三个角色:
|
|
|
|
+
|
|
|
|
+* Daemon:常驻后台运行的进程,接收客户端请求,管理 docker 容器。
|
|
|
|
+* Client:命令行终端,包装命令发送 API 请求。
|
|
|
|
+* Engine:真正处理客户端请求的后端程序。
|
|
|
|
+
|
|
|
|
+* api:定义 API,使用了Swagger2.0这个工具来生成 API,配置文件在api/swagger.yaml
|
|
|
|
+* builder:用来 build docker 镜像的包,看来历史比较悠久了
|
|
|
|
+* bundles:这个包是在进行docker 源码编译和开发环境搭建 的时候用到的,编译生成的二进制文件都在这里。
|
|
|
|
+* cli:使用cobra 工具生成的 docker 客户端命令行解析器。
|
|
|
|
+* client:接收cli的请求,调用 RESTful API 中的接口,向 server 端发送 http 请求。
|
|
|
|
+* cmd:其中包括docker和dockerd两个包,他们分别包含了客户端和服务端的 main 函数入口。
|
|
|
|
+* container:容器的配置管理,对不同的 platform 适配。
|
|
|
|
+* contrib:这个目录包括一些有用的脚本、镜像和其他非 docker core 中的部分。
|
|
|
|
+* daemon:这个包中将 docker deamon 运行时状态 expose 出来。
|
|
|
|
+* distribution:负责 docker 镜像的 pull、push 和镜像仓库的维护。
|
|
|
|
+* dockerversion:编译的时候自动生成的。
|
|
|
|
+* docs:文档。这个目录已经不再维护,文档在另一个仓库里 。
|
|
|
|
+* experimental:从 docker1.13.0 版本起开始增加了实验特性。
|
|
|
|
+* hack:创建 docker 开发环境和编译打包时用到的脚本和配置文件。
|
|
|
|
+* image:用于构建 docker 镜像的。
|
|
|
|
+* integration-cli:集成测试
|
|
|
|
+* layer:管理 union file system driver 上的 read-only 和 read-write mounts。
|
|
|
|
+* libcontainerd:访问内核中的容器系统调用。
|
|
|
|
+* man:生成 man pages。
|
|
|
|
+* migrate:将老版本的 graph 目录转换成新的 metadata。
|
|
|
|
+* oci:Open Container Interface 库
|
|
|
|
+* opts:命令行的选项库。
|
|
|
|
+* pkg:
|
|
|
|
+* plugin:docker 插件后端实现包。
|
|
|
|
+* profiles:里面有 apparmor 和 seccomp 两个目录。用于内核访问控制。
|
|
|
|
+* project:项目管理的一些说明文档。
|
|
|
|
+* reference:处理 docker store 中镜像的 reference。
|
|
|
|
+* registry:docker registry 的实现。
|
|
|
|
+* restartmanager:处理重启后的动作。
|
|
|
|
+* runconfig:配置格式解码和校验。
|
|
|
|
+* vendor:各种依赖包。
|
|
|
|
+* volume:docker volume 的实现。
|
|
|
|
+
|
|
|
|
+## Develop
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+```
|
|
|
|
+make all
|
|
|
|
+```
|
|
|
|
+
|
|
|
|
+
|