Docker架构概览
Docker架构概览
在Docker中,其架构是松耦合结构,不通的模块各司其职,有机组合,用于完成用户的请求。
1.Docker daemon
首先在图片的最中间部分,是Docker daemon,这是Docker架构中的主要用户接口,其具体作用是:
(1)提供API Service用于接收来自Docker client的请求。
(2)根据不同的请求分发给Docker daemon的不通模块执行相应的工作
2.Docker client
Docker client是一个泛称,用来向Docker daemon发起请求,执行相应的容器管理操作。
3.镜像管理
Docker通过distribution、layer、image、registry、reference等模块实现了Docker的镜像管理。
(1)distribution:负责与Docker registry交互
(2)registry:负责和Docker registry有关的身份验证、镜像查找、镜像验证以及管理镜像等交互操作
(3)image:负责与镜像元数据有关的存储、查找,镜像层的索引、查找以及镜像tar包有关的导入导出等工作
(4)referrence:负责存储本地所有镜像的repository和tag名,并维护与镜像ID之间的映射关系
(5)layer:负责与镜像层和容器层元数据有关的增删改查。
4.Docker daemon中的三种驱动
execdriver、volumedriver、graphdriver分别是容器执行驱动、volume存储驱动、镜像存储驱动。
(1)容器执行驱动,目前主要使用的是docker官方编写的libcontainer库,是对于namespaces、cgroups、apparmor等容器运行所必须要的操作进行第二次封装
(2)colume存储驱动是volume数据卷存储操作的最终执行者,负责volume的增删改查,屏蔽不同驱动细线的区别,为上一层调用者提供一个统一的接口
(3)镜像存储驱动是所有容器镜像相关操作的最终执行者。该驱动会在Docker工作目录下维护一组与镜像层对应的目录,并记下镜像层之间的关系以及具体的驱动实现相关的元数据
5.network
目前,Docker使用的是容器网络模型(CNM),并且给调用者提供了统一抽象接口,CNM模型对真是的容器网络抽象除了沙盒、端点、网络三种对象。由具体的网络操作对象,并通过网络控制器提供一个统一接口调用者管理网络。