《容器技术系列》一3.2 Docker Daemon的启动流程

3.2 Docker Daemon的启动流程

Docker Daemon和Docker Client的启动均通过可执行文件docker完成,因此两者的启动流程非常相似。Docker可执行文件运行时,程序运行通过不同的命令行flag参数,区分两者,并最终运行两者各自相应的部分。
启动Docker Daemon时,一般可以使用以下命令:docker --daemon=true、docker –d; docker -d=true等。随后由
Docker的main()函数来解析以上命令的相应flag参数,并最终完成Docker Daemon的启动。
首先,附上Docker Daemon的启动流程图,如图3-2所示。

本书第2章已经描述了Docker中main()函数运行的很多前期工作,Docker Daemon的启动也会涉及这些工作,故在此略去相同部分,主要针对后续仅和Docker Daemon相关的内容进行深入分析,即mainDaemon()的具体源码实现。

时间: 2024-10-27 14:44:18

《容器技术系列》一3.2 Docker Daemon的启动流程的相关文章

《容器技术系列》一2.2 创建Docker Client

2.2 创建Docker Client 对于Docker这样一个Client/Server的架构,客户端的存在意味着Docker相应任务的发起.用户首先需要创建一个DockerClient,随后将特定的请求类型与参数传递至Docker Client,最终由Docker Client转义成Docker Server能识别的形式,并发送至Docker Server. Docker Client的创建实质上是Docker用户通过二进制可执行文件docker,创建与Docker Server建立联系的客

《容器技术系列》一导读

前 言 Docker是什么 Docker从2013年诞生,短短两年时间就在全球IT技术圈内迅速走红,实乃技术圈内不可忽视的一阵飓风.然而,Docker是什么,Docker带来了什么? Docker官方如此描述Docker:"Build, Ship, Run. An open platform for distributed applications for developers and sysadmins".换言之,Docker为开发者与系统管理者提供了分布式应用的开放平台,从而可以便

《容器技术系列》一3.1 引言

3.1 引言 自Docker诞生以来,便引领了轻量级虚拟化容器领域的技术热潮.在这一潮流下,Google.IBM.Redhat等业界翘楚纷纷加入Docker阵营.虽然目前Docker仍主要基于Linux平台,但是Microsoft却多次宣布对Docker的支持,从先前宣布的Azure支持Docker与Kubernetes,到如今宣布的下一代Windows Server原生态支持Docker.Microsoft的这一系列举措多少喻示着向Linux世界的妥协,当然这也不得不让世人对Docker的巨大

《容器技术系列》一1.3 Docker各模块功能与实现分析

1.3 Docker各模块功能与实现分析 下面我们将从Docker的总架构图入手,抽离出架构内的各个模块,并对各个模块进行更为细化的架构分析与功能阐述. 1.3.1 Docker Client Docker Client是Docker架构中用户与Docker Daemon建立通信的客户端.在一台安装有Docker的机器上,用户可以使用可执行文件docker作为Docker Client,发起众多Docker容器的管理请求. Docker Client可以通过以下三种方式和Docker Daemo

《容器技术系列》一1.4 Docker运行案例分析

1.4 Docker运行案例分析 1.3节着重介绍了Docker架构中各个模块的功能,学完后我们可以对Docker的架构有一个宏观的认识.熟悉一款软件,研究一个系统,从静态的角度认识架构的各个模块,仅仅是第一步:从动态的角度,掌握软件或者系统的运行原理,即熟知架构中模块间的通信逻辑,无疑会让自己对软件或系统的理解更上一层楼.本节将从实际的Docker运行案例出发,串联Docker各模块,从而学习Docker的运行流程.分析原型为Docker中的docker pull与docker run两个命令

《容器技术系列》一3.3 mainDaemon()的具体实现

3.3 mainDaemon()的具体实现 Docker Daemon的启动流程图展示了DockerDaemon的从无到有.通过分析流程图,我们可以得出一个这样的结论:区分Docker Daemon与Docker Client的关键在于flag参数flDaemon的值.一旦*flDaemon的值为真,则代表docker二进制需要启动的是Docker Daemon.有关Docker Daemon的所有的工作,都被包含在函数mainDaemon()的具体实现中.宏观来讲,mainDaemon()的使

《容器技术系列》一3.4 总结

3.4 总结 本章从源码的角度分析了Docker Daemon的启动,着重分析了mainDaemon()的实现.Docker Daemon作为Docker架构中的主干部分,负责了Docker内部几乎所有操作的管理.学习Docker Daemon的具体实现,可以对Docker架构有一个较为全面的认识.总结而言,Docker的运行载体为Daemon,调度管理由Engine负责,任务执行靠Job.

Docker daemon 无法启动: does not match with stored UUID错误解决办法_docker

Docker daemon 无法启动: does not match with stored UUID错误              最近做项目,遇到Docker daemon 无法启动: does not match with stored UUID错误的问题,经过上网查找资料解决了问题,这里记录下解决办法.  Docker 默认使用loop设备存储镜像.使用/var/lib/docker存储.但是当根分区不够大的时候(Centos7默认安装只有50G),那就麻烦了. 这里提供下修改方法(以c

《容器技术系列》一2.3 Docker命令执行

2.3 Docker命令执行 main函数执行到这个阶段,有以下内容需要为Docker命令的执行服务:创建完毕的Docker Client,docker命令中的请求参数(经flag解析后存放于flag.Arg()).也就是说,程序需要使用Docker Client来分析Docker命令中的请求参数,得出请求的类型,转义为Docker Server可以识别的请求之后,最终发送给Docker Server.Docker Client主要完成两方面的工作:解析请求命令,得出请求类型:执行具体类型的请求