Docker基础架构

2022-02-16 栏目:技术知识

Docker目前采用了标准的C/S架构,包含客户端、服务端两大核心组件,同时通过镜像仓库来存储镜像。客户端和服务器既可以运行在一台机器上,可以可以通过socket或RESTful API来进行通信。架构拓扑如下:

Docker架构拓扑

  1. 服务端

    Docker服务端一般在Docker Host后台运行,dockerd作为服务端接受来自客户端的请求,并通过containerd具体处理与容器相关的请求,包括创建、运行,删除容器等。服务器端主要包含四个组件:

  • dockerd:为客户端提供RESTful API,响应来自客户端的请求,采用模块化的架构,通过专门的Engine模块来分发管理各个来自客户端的任务。可以独立升级;

  • docker-proxy:是dockerd的子进程,当需要进行容器端口映射时,docker-proxy完成网络映射配置;

  • containerd:是dockerd的子进程,提供gRPC接口响应来自dockerd的请求,对下管理runC镜像和容器环境。可以独立升级;

  • containerd-shim:是dockerd的子进程,为runC容器提供支持,同时作为容器内进程的根进程。

  • runC:是从Docker公司开源的libcontainer项目演化而来,目前作为一种具体的开放容器标准实现加入Open Container Initiavie(OCI)。runC已经支持了Linux系统中容器相关技术栈,同时正在实现对其他操作系统的兼容。

  1. 客户端

    Docker客户端为用提供一系列可执行命令,使用这些命令可实现与Docker服务端交换。