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文档。上传文档
查看更多
docker分析

该文为《Docker源码分析》系列第二篇,在Docker架构篇的基础上,继续从源码的角度出发,分析用户如何创建Docker Client,以及如何通过Docker Client发送用户具体请求。可以说,发挥Docker最大魅力,从使用Docker做起,使用Docker,从精通Docker Client入手1. 前言如今,Docker作为业界领先的轻量级虚拟化容器管理引擎,给全球开发者提供了一种新颖、便捷的软件集成测试与部署之道。在团队开发软件时,Docker可以提供可复用的运行环境、灵活的资源配置、便捷的集成测试方法以及一键式的部署方式。可以说,Docker的优势在简化持续集成、运维部署方面体现得淋漓尽致,它完全让开发者从前者中解放出来,把精力真正地倾注在开发上。然而,把Docker的功能发挥到极致,并非一件易事。在深刻理解Docker架构的情况下,熟练掌握Docker Client的使用也非常有必要。前者可以参阅《Docker源码分析》系列之Docker架构篇,而本文主要针对后者,从源码的角度分析Docker Client,力求帮助开发者更深刻的理解Docker Client的具体实现,最终更好的掌握Docker Client的使用方法。即本文为《Docker源码分析》系列的第二篇——Docker Client篇。2. Docker Client源码分析章节安排本文从源码的角度,主要分析Docker Client的两个方面:创建与命令执行。前四章安排如下:第一章为前言,介绍Docker的作用以及研究Docker Client的必要性。第二章介绍部分章节安排。第三章从Docker Client的创建入手,进行源码分析,主要分为三小节。在3.1节中,分析如何通过docker命令,解析出命令行flag参数,以及docker命令中的请求参数。在3.2节中,分析如何处理具体的flag参数信息,并收集Docker Client所需的配置信息。在3.3节中,分析如何创建一个Docker Client。第四章在已有Docker Client的基础上,分析如何执行docker命令,分为两小节。在4.1节中,分析如何解析docker命令中的请求参数,获取请求的类型。在4.2节中,分析Docker Client如何将执行具体的请求命令,最终将请求发送至Docker Server。3. Docker Client的创建Docker Client的创建,实质上是Docker用户通过可执行文件docker,与Docker Server建立联系的客户端。以下分三个小节分别阐述Docker Client的创建流程。以下为整个docker源代码运行的流程图:上图通过流程图的方式,使得读者更为清晰的了解Docker Client创建及执行请求的过程。其中涉及了诸多源代码中的特有名词,在下文中会一一解释与分析。3.1. Docker命令的flag参数解析众所周知,在Docker的具体实现中,Docker Server与Docker Client均由可执行文件docker来完成创建并启动。那么,了解docker可执行文件通过何种方式区分两者,就显得尤为重要。对于两者,首先举例说明其中的区别。Docker Server的启动,命令为docker -d或docker –daemon=true;而Docker Client的启动则体现为docker –daemon=false ps、docker pull NAME等。可以把以上Docker请求中的参数分为两类:第一类为命令行参数,即docker程序运行时所需提供的参数,如: -D、–daemon=true、–daemon=false等;第二类为docker发送给Docker Server的实际请求参数,如:ps、pull NAME等。对于第一类,我们习惯将其称为flag参数,在go语言的标准库中,同时还提供了一个flag包,方便进行命令行参数的解析。交待以上背景之后,随即进入实现Docker Client创建的源码,位于./docker/docker/docker.go,在该go文件中,包含了整个Docker的main函数,也就是整个Docker(不论Docker Daemon还是Docker Client)的运行入口。部分main函数代码如下:func main() { if reexec.Init() { return }flag.Parse() // FIXME: validate daemon flags here …… }```在以上代码中,首先判断reexec.Init()方法的返回值

文档评论(0)

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

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

1亿VIP精品文档

相关文档