美文网首页
docker各模块架构

docker各模块架构

作者: 我是聪 | 来源:发表于2021-06-28 05:45 被阅读0次

docker总体架构

总架构

image.png docker各模块架构分析.png

DockerClient

  • 简介

    • 与Docker Daemon建立通信的最佳途径
    • 通过client发送请求

DockerDaemon

  • 简介

    • 具备服务端的功能,接受&&处理请求

    • 所有任务有engine来完成

    • 每一项工作都以一个Job形式存在

      • job种类因请求类型不同而多样

Docker Registry

  • 简介

    • 存储容器镜像的仓库

Graph

image.png
  • 简介

    • 容器镜像的保管者

Driver

  • 简介

    • docker架构中的驱动模块

    • 实现对Dcoker容器运行环境的定制

      • 网络环境
      • 存储方式
      • 容器的执行方式

libcontainer

  • 简介

    • 独立的容器管理解决方案

      • namespaces
      • cgroups
      • capabilities
    • 抽象了Linux的内核特性

    • 提供完整、明确的接口给Docker Daemon

Docker Container

  • 简介

    • 隔离的运行环境
    • 独立的网络栈资源
    • 受限的资源

各功能模块实现

Docker Client

Docker Daemon

Docker Daemon运行时,会在后台启动一个Server,Server负责接受Docker Client发送的请求;接受请求后,Server通过路由与分发调度,找到相应的Handler来处理请求

  • 作用

    • 接受&&处理请求
    • 管理所有的Docker容器
  • 架构

    • Docker Server


      image.png
    - 作用

        - 接受并调度分发Docker Client发送的请求

    - 处理过程

        - 通过gorilla/mux,创建一个mux.Router路由器

            - 提供请求的路由功能

        - 为mux.Router中添加有效的路由项

            - 路由项组成

                - HTTP请求方法

                    - PUT
                    - POST
                    - GET
                    - DELETE

                - URL
                - Handler

        - 执行httpSrv.Serve()服务外部请求

            - 创建一个httpSrv=http.Server{}

                - 参数

                    - Server的监听地址
                    - mux.Router

        - 在listener上接受Docker Client的访问请求

            - 创建一个全新的goroutine来服务

                - 读取请求内容
                - 对请求进行解析
                - 匹配相应的路由项
                - 调用相应的Handler来处理
                - 处理完后给client进行回复

- Engine

    - 简介

      Docker中大部分任务的执行都需要Engine协助,并通过Engine匹配相应的Job完成Job的执行
      Engine还接管Docker Daemon的某些特定任务。当Docker Daemon遭遇到自身进程需要退出的情况时,Engine还负责完成DockerDaemon退出前的所有善后工作
      
        - docker运行的核心模块
        - 存储着大量的容器信息
        - 管理着Docker大部分Job的执行

- Job

    - 简介

        - Engine内部的最基本的工作单元

Docker Regisrty

  • 与Docker交互方式

    • 搜索镜像

      • search
    • 下载镜像

      • pull
    • 上传镜像

      • push
  • 种类

    • 共有仓库如Dcokerhub
    • 私有仓库-自行搭建

Driver

  • 分类

    • graphdriver


      image.png
    - 简介

        - 四种文件系统驱动Driver在Doker daemon内部注册

            - 容器镜像的管理

                - aufs
                - btrfs
                - devmapper

            - 容器volume的管理

                - vfs

        - 子主题 3

- networkdriver
image.png
    - 简介

        - 完成docker的网络环境的配置

            - 为Docker环境创建网桥
            - 容器创建前为其分配相应的网络接口资源
            - 为容器分配IP、端口、并与宿主机做NAT端口映射

- execdriver
image.png
    - 简介

        - 负责创建容器运行时的命名空间
        - 容器资源使用的统计与限制
        - 容器内部的真正运行

libcontainer

image.png
  • 简介

    • 设计初衷时希望该库不依靠任何依赖,直接访问内核与容器相关的系统调用
    • 提供了一系列接口满足上层建筑对容器管理需求

Docker Container

image.png
  • 简介

    • 容器是最终的交付模式

      • DockerDaemon进行管理
      • libcontainer负责执行
      • 最终创建dockrer容器
  • 用户配置模式

    • 指定容器镜像,自定义rootfs文件系统
    • 指定物理资源配额,限制资源使用
    • 配置网络及其安全策略
    • 指定运行命令,指定指定任务

相关文章

网友评论

      本文标题:docker各模块架构

      本文链接:https://www.haomeiwen.com/subject/aowfultx.html