张图带你深入理解 Docker 架构!.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
9 张图带你深化理解 Docker 架构! 一、Docker Client「发起恳求」 1、Docker Client 是 和 Docker Daemon 建立通信的客户端。用户使用的可执行文件为 docker(一个命令行可执行文件),docker 命令使用后接参数的方式来实现一个完整的恳求命令(例如:docker images,docker 为命令不行变,images 为参数可变)。 2、Docker Client 可以通过以下三种方式和 Docker Daemon 建立通信:tcp://host:port、unix://pathtosocket 和 fd://socketfd 3、Docker Client 发送容器管理恳求后,由 Docker Daemon 接受并处理恳求,当 Docker Client 接收到前往的恳求相应并简约处理后,Docker Client 一次完整的生命周期就结束了。(一次完整的恳求:发送恳求→处理恳求→前往结果),与传统的 C/S 架构恳求流程并无不同。 二、Docker Daemon(后台守护进程) Docker daemon 架构图: Docker Server 架构图: 1、Docker Server 相当于 C/S 架构的服务端。功能为接受并调度分发 Docker Client 发送的恳求。接受恳求后,Docker Server 通过路由与分发调度,找到相应的 Handler 来执行恳求。 2、在 Docker 的启动过程中,通过包 gorilla/mux 创建了一个 mux.Router 来供应恳求的路由功能。在 Golang 中 gorilla/mux 是一个强大的 URL 路由器以及调度分发器。该 mux.Router 中添加了众多的路由项,每一个路由项由 HTTP 恳求方法(PUT、POST、GET 或DELETE)、URL、Handler 三部分组成。 3、创建完 mux.Router 之后,Docker 将 Server 的监听地址以及 mux.Router 作为参数来创建一个 httpSrv=http.Server{},最终执行 httpSrv.Serve() 为恳求服务。 4、在 Docker Server 的服务过程中,Docker Server 在 listener 上接受 Docker Client 的访问恳求,并创建一个全新的 goroutine 来服务该恳求。在 goroutine 中,首先读取恳求内容并做解析工作,接着找到相应的路由项并调用相应的 Handler 来处理该恳求,最终 Handler 处理完恳求之后回复该恳求。 三、Docker Engine 1、Docker Engine 是 Docker 架构中的运转引擎,同时也 Docker 运转的核心模块。它扮演 Docker Container 存储仓库的角色,并且通过执行 Job 的方式来操纵管理这些容器。 2、在 Docker Engine 数据结构的设计与实现过程中,有一个 Handler 对象。该 Handler 对象存储的都是关于众多特定 Job 的 Handler 处理访问。举例说明: Docker Engine 的Handler 对象中有一项为:{“create”: daemon.ContainerCreate,},则说明当名为”create” 的 Job 在运转时,执行的是 daemon.ContainerCreate 的 Handler。 -? ? ?Job? ? - 1、一个 Job 可以认为是 Docker 架构中 Docker Engine 内部最基本的工作执行单元。Docker 可以做的每一项工作,都可以笼统为一个 Job。例如:在容器内部运转一个进程,这是一个 Job;创建一个新的容器,这是一个 Job。Docker Server 的运转过程也是一个 Job,名为 ServeApi。 2、Job 的设计者,把 Job 设计得与 Unix 进程相仿。比如说:Job 有一个名称、有参数、有环境变量、有标准的输入输出、有错误处理,有前往形态等。 四、Docker Registry(镜像注册中心) 1、Docker Registry 是一个存储容器镜像的仓库(注册中心),可理解为云端镜像仓库。按 Repository 来分类,docker pull 依据 [repository]:[tag] 来精确定义一个具体的 Image。 2、在 Docker 的运转过程中,Docker Daemon 会与 Docker Registry 通信,并实现搜索镜像、下载镜像、上传镜像三个功能,这三个功能对应的 Job 名称分别为:“search”、”pull” 与 “push”。 3 Docker

文档评论(0)

bob157641554 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档