Docker源码分析:docker架构

一、Docker总架构

Docker对用户而言是一个简单的C/S架构,用户通过客户端与服务器端建立通信,而Docker的后端是一个松耦合的架构,架构中的模块各司其职、有机组合,支撑着Docker运行。

docker架构中主要的模块有:DockerClient、DockerDaemon、Docker Registry、Graph、Driver、libcontainer以及Docker Container。

Docker客户端是用户与Docker交互的主要方式,用户通过命令行或者图形界面与Docker API通信,向Docker Daemon发出请求来创建、管理、启动、停止或删除容器等。

Docker Daemon是运行在主机上的后台服务,负责接收来自Docker客户端的请求,管理本地的Docker对象(如镜像、容器、网络等),并执行这些请求。Docker Daemon内部所有的任务均由Engine来完成,且每一项工作都以一个Job的形式存在。

Driver是Docker用来与底层操作系统的存储和网络子系统交互的接口。不同的驱动程序可以实现不同的存储和网络后端,比如使用AUFS、OverlayFS等文件系统来实现镜像层的存储,使用bridge、overlay等网络驱动来实现容器之间的网络通信。

libcontainer是一套独立的容器管理解决方案,这套解决方案涉及了大量Linux内核方面的特性,如:namespaces、cgroups以及capabilities等。libcontainer很好地抽象了Linux的内核特性,并提供完整、明确的接口给Docker Daemon。

  总架构图

二、Docker Daemon

Docker Daemon是Docker架构中一个常驻在后台的系统进程。所谓的“运行Docker”,即代表运行Docker Daemon。总之,DockerDaemon的作用主要有以下两方面:1、接收并处理Docker Client发送的请求;2、管理所有的Docker容器。 

Docker Daemon运行时,会在后台启动一个Server,Server负责接收Docker Client发送的请求;接收请求后,Server通过路由与分发调度,找到相应的Handler来处理请求。Docker Daemon的架构大致可以分为三部分:Docker Server、Engine和Job。 Docker Daemon架构图:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值