Docker是干什么的
本文不介绍Docker是干什么的。请自行百度。
Docker架构
Docker主要模块有DockerClient, DockerDaemon, Docker Registry, Graph, Driver, libcontainer, Docker Container。
Docker Client
Docker Client是客户端层,是用户主要接触的层级,用户通过Docker Client发起容器管理请求,与Docker Daemon建立通信。请求最终发往Docker Container。
Docker Client与Docker Daemon建立通信的方式有3种,tcp://host:port、unix://path_to_socket、和fd://socketfd。
Docker Daemon
Docker Daemon是Docker架构中的一个常驻在后台的系统进程。
Docker Daemon作为Docker架构中的主体部分,首先具备服务端的功能,有能力接收Docker Client发起的请求,其次具备Docker Client请求的处理能力。
Docker Daemon可以分为3部分,Docker Server、Engine和job。
Docker Daemon内部所有的任务均由Engine来完成,且每一项工作都以一个Job的形式存在。
Docker Registry
Docker Registry是一个存储容器镜像的仓库。容器镜像是容器创建时用来初始化容器rootfs的文件系统内容。Docker Registry将大量的容器镜像汇集在一起,并为分散的Docker Daemon提供镜像服务。
libcontainer
libcontainer是一套独立的容器管理解决方案,涉及大量的linux内核,主要包含namespaces, cgroups, capabilities。利用namespaces(命名空间)和cgroups(控制组)为容器提供隔离的运行环境,拥有独立的网络栈资源等等。