Docker 容器服务架构概览

2018-11-27 0 By admin

在Docker中,其架构是松耦合结构,不同的模块各司其职,有机组合,用于完成用户的请求。

一、Docker daemon

Docker daemon是Docker架构中的主要用户接口,其具体作用是:
(1)提供API Service用于接收来自Docker client的请求。
(2)根据不同的请求分发给Docker daemon的不通模块执行相应的工作。

二、Docker client

Docker client是一个泛称,用来向Docker daemon发起请求,执行相应的容器管理操作。

三、镜像管理

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:负责与镜像层和容器层元数据有关的增删改查。

四、Docker daemon中的三种驱动

execdriver、volumedriver、graphdriver分别是容器执行驱动、volume存储驱动、镜像存储驱动。

4.1、容器执行驱动

目前主要使用的是docker官方编写的libcontainer库,是对于namespaces、cgroups、apparmor等容器运行所必须要的操作进行第二次封装。

4.2、volume存储驱动

volume数据卷存储操作的最终执行者,负责volume的增删改查,屏蔽不同驱动细线的区别,为上一层调用者提供一个统一的接口。

4.3、镜像存储驱动

所有容器镜像相关操作的最终执行者。该驱动会在Docker工作目录下维护一组与镜像层对应的目录,并记下镜像层之间的关系以及具体的驱动实现相关的元数据。

五、network 网络

目前,Docker使用的是容器网络模型(CNM),并且给调用者提供了统一抽象接口,CNM模型对真是的容器网络抽象除了沙盒、端点、网络三种对象。由具体的网络操作对象,并通过网络控制器提供一个统一接口调用者管理网络。