1、什么是Docker?
Docker Linux 平台上的一款轻量级虚拟化容器的管理引擎。在全球范围内, Docker 还是一个开源项目,整个项目基于 Go 语言开发,代码托管于 GitHub 网站上,并遵从 Apache 2.0 协议。目前, Docker 可以帮助用户在容器内部快速自动化部署应用,并利用 Linux 内核特性命名空间( namespaces) 及控制组( cgroups) 等为容器提供隔离的运行环境。Docker 借助操作系统层的虚拟化实现资源的隔离,因此 Docker 容器在运行时与虚拟机 (VM) 的运行有很大的区别, Docker 容器与宿主机共享同一个操作系统,不会有额外的操作系统开销。
2、Docker总体架构图
查看架构图详解,请参考:https://www.infoq.cn/article/docker-source-code-analysis-part1
3、背景:
了解Docker源码解析Dockerfile的流程,了解docker build以及docker run 在client、daemon和engine端的处理。
4、 源码基于Docker-ce17.09.
5、源码:
Docker Client 是Docker 架构中用户与 Docker Daemon 建立通信的客户端。从main()函数开始,位置点击。
5.1、流程:(截图于博友,自己作图太麻烦,跟17.09有点差别,自己对比)
5.2、源码分析:
docker client的入口函数main,在main中处理传入的参数,并把参数转化为cobra的command类型,最后通过cobra调用相应的方法。