Docker架构概览

网上很多架构图中都有Docker Engine和Job,但是1.7版本其实不再用这种方式。

Docker使用C/S架构。用户通过Docker client与Docker daemon通信,Docker daemon中有个API Server处理具体请求。而具体到后端的实际操作,Docker则分了很多模块,其中对容器运行时、volume、镜像以及网络方面的具体实现已经放在daemon以外的模块中。

Docker架构

其中execdriver是容器执行驱动,volumedriver是volume存储驱动,graphdriver是镜像存储驱动。

网络部分现在已经分离成一个libnetwork库独立维护。

client和daemon

client模式的命令基本就是执行对应方法,向daemon发起请求,之后读取docker daemon的返回结果。

daemon首先要启动一个API server,然后创建各种容器配置和环境(/var/lib/docker/)以及网络,最后一个daemon对象诞生。

启动容器再执行下去就是去调用execdriver了,这一块再交由底层模块处理。