docker使用传统的cs架构,总架构图如下所示。用户通过Docker client与Docker daemon简历通信,并将请求发送给后者。
从上图可以看出,Docker daemon是Docker架构中的主要用户接口。首先,它提供了API Server用于接收来自Docker client的请求,其后根据不同的请求分发给Docker daemon的不同模块执行相应的工作。
1、Docker daemon
Docker daemon是Docker的最核心的后台进程,它负责响应来自Docker client的请求,然后将这些请求翻译成系统调用完成容器管理操作。该进程会在后台启动一个API Server,负责接收由Docker发送的请求;接收到 的请求将通过Docker daemon分发调度,再由具体的函数来执行请求。
2、Docker client
Docker client是一个泛称,用来向Docker daemon发起请求,执行相应的容器管理操作。它既可以是命令行工具Docker,也可以是任何遵守Docker API的客户端。
3、镜像管理
Docker通过distribution、register、layer、image、reference等模块实现了Docker镜像的管理。
4、execdriver、volumedriver\graphdriver
5、network
在Docker1.9版本以前,网络是通过networkdriver模块以及libcontainer库完成的,现在这部分功能以及分离成一个libnetwork库独立维护。libnetwork抽象出了一个容器网络模型(Container Network Model,CNM),并给调用者提供了一个统一抽象接口,其目标并不仅限于Docker容器。CNM模型对真实的容器网络抽象出了沙盒(sandbox)、端点(endpoint)、网络(network)这3种对象,由具体网络驱动(包括内置的Bridge、Host、None和overlay驱动以及通过插件配置的外部驱动)操作对象,并通过网络控制器提供一个统一接口供调用者管理网络。网络驱动负责实现具体的操作,包括创建容器通信所需要的网络,容器的network namespace,这个网络所需的虚拟网卡,分配通信所需的IP,服务访问的端口和容器与宿主机之间的端口映射,设置host、resolv.conf、iptables等。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。