docker架构分析

Docker架构总览

​ docker使用传统的cs架构,总架构图如下所示。用户通过Docker client与Docker daemon简历通信,并将请求发送给后者。

在这里插入图片描述

​ 从上图可以看出,Docker daemon是Docker架构中的主要用户接口。首先,它提供了API Server用于接收来自Docker client的请求,其后根据不同的请求分发给Docker daemon的不同模块执行相应的工作。

Docker组件介绍
  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镜像的管理。

    • distribution负责与Docker register交互 ,上传下载镜像以及存储v2 register有关的元数据。
    • register模块负责与Docker register有关的身份验证、镜像查找、镜像验证以及管理registry mirror等交互操作。
    • image模块负责与镜像元数据有关的存储、查找,镜像层的索引、查找以及镜像tar包有关的导入、导出等操作。
    • reference负责存储本地所有镜像的repository和tag名,并维护与镜像ID之间的映射关系。
    • layer模块负责与镜像层和容器层元数据有关的增删改查,并负责将镜像层的增删改查操作映射到实际存储镜像层文件系统的graphdriver模块。
  4. execdriver、volumedriver\graphdriver

    • execdriver 是对Linux操作系统的namespace、cgroups、apparmor、SELinux等容器运行所需的系统操作进行的一层二次封装,其本质作业类似LXC。execdriver最主要的实现为libcontainer库。
    • volumedriver 是volume数据卷存储操作的最终执行者,负责volume的增删改查,屏蔽不同驱动实现的区别,为上层调用者提供一个统一的接口。volumedriver的默认实现是local。
    • graphdriver是所有与容器镜像相关操作的最终执行者。graphdriver会在Docker工作目录下维护一组与镜像层对应的目录,并记下镜像层之间的关系以及与具体的graphdriver实现相关的元数据。目前graphdriver的实现有aufs、btrfs、zfs、devicemapper、overlay和vfs。
  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等。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值