docker架构

本文深入探讨了Docker的总体架构,包括Docker Client、Daemon、Registry、Graph、Driver、libcontainer和Container。Docker Client通过多种方式与Daemon交互,发起容器管理请求。Docker Daemon是核心组件,管理容器并执行各种任务,如Job,负责镜像的下载、存储和容器的创建。Engine执行大部分Job,而Job是工作单元。Docker Registry存储镜像,Graph管理镜像,Driver提供定制化功能。libcontainer是直接访问内核的容器管理库。Docker Container是服务交付的最终形式,通过配置镜像、资源、网络和命令来创建。
摘要由CSDN通过智能技术生成

本文章基于《docker源码分析》(孙宏亮)的做总结,用于学习:
从三个方面叙述:

  1. docker总统架构图
  2. docker架构内部各个模块功能实现和分析
  3. 通过docker pull,docker run的docker启动流程。解释dockerfile build一个镜像的原理

一、docker总体架构图

在这里插入图片描述
由上图可知、docker主要包括docker Client、docker daemon、Docker Registry、Graph、Driver、libcontainer以及Docker container模块。对用户而言, Docker Client 是与 Docker Daemon 建立通信的最佳途径。用户通过 Docker Client 发起容器的管理请求,请求最终发往 Docker Daemon。Docker Daemon 作为 Docker 架构中的主体部分,首先具备服务端的功能,有能力接收Docker Client 发起的请求;其次具备 Docker Client 请求的处理能力。 Docker Daemon 内部所有的任务均由 Engine 来完成,且每一项工作都以一个 Job 的形式存在。
Docker Daemon 需要完成的任务很多,因此 Job 的种类也很多。若用户需要下载容器镜像, Docker Daemon 则会创建一个名为" pull" Job ,运行时从 Docker Registry 中下载镜像,并通过镜像管理驱动 graphdriver 将下载的镜像存储在 graph 中;若用户需要为 Docker
容器创建网络环境, Docker Daemon 则会创建一个名 “allocate interface” Job ,通过网络驱动 networkdriver 分配网络接口的资源……
libcontainer 是一套独立的容器管理解决方案,这套解决方案涉及了大量 Linux 内核方面的特性,如: namespaces cgroups 以及 capabilities 等。 libcontainer 很好地抽象了 Linux 的内核特性,并提供完整、明确的接口给 Docker Daemon
当用户执行运行容器这个命令之后,一个 Docker 容器就处于运行状态,该容器拥有隔离的运行环境、独立的网络椅资源以及受限的资源等。

1、Docker client

Docker client是Docker架构中和Docker Daemon交互的客户端。在一台装有Docker的机器上,可以执行docker二进制文件作为Docker Client。发起多个docker容器的管理请求
Docker Client可以通过三种方式和Docker Daemon建立链接。
①tcp://host:port
②unix://path_to_socket
③fd://socketfd

Docker Client发送容器请求,请求由Docker Daemon接收后,Docker Client的生命周期结束。若需要继续发送请求,用户必须再次通过可执行文件docker创建Docker Client发送请求

2、Docker Daemon

Docker Daemon Docker 架构中一个常驻在后台的系统进程。所谓的"运行 Docker" ,
即代表运行 Docker Daemon 。总之, DockerDaemon 的作用主要有以下两方面:

  1. 接收并处理 Docker Client 发送的请求。
  2. 管理所有的 Docker 容器。

Docker Daemon 运行时,会在后台启动一个 Server Se er 负责接收 Docker Client 发送的请求;接收请求后, Server 通过路由与分发调度,找到相应的 Handler 来处理请求。
启动 Docker Daemon 所使用的可执行文件同样是 docker ,与 Docker Client 启动所使用的可执行文件 docker 相同。既然 D

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值