docker源码学习-基础架构

来源:互联网 发布:殷素素 俞岱岩 知乎 编辑:程序博客网 时间:2024/04/29 07:36

声明本文学习源码为 1 1.2.0

[liyang@beta.internal.beta.10-11-147-62 docker]$ cat VERSION 1.2.0

架构介绍

docker主要模块包括:dockerClient、dockerDaemon、DockerRegistry、Graph、Driver、libcontainer以及dockerContainer。总架构如下图所示:

这里写图片描述

各模块概述

docker clent

Docker Client 是Docker 架构中用户与Docker Daemon 建立通信的客户端。

docker daemon

engine

Engine 是Docker 架构中的运行引擎,同时也是Docker 运行的核心模块。Engine 存储着
大量的容器信息,同时管理着Docker 大部分Job 的执行。换言之,Docker 中大部分任务的
执行都需要Engine 协助,并通过Engine 匹配相应的Job 完成Job 的执行。

JOB

Job 可以认为是Docker 架构中Engine 内部最基本的工作执行单元。DockerDaemon 可
以完成的每一项工作都会呈现为一个Job。例如,在Docker 容器内部运行一个进程,这是
一个Job;创建一个新的容器,这是一个Job;在网络上下载一个文档,这是一个Job;包括
之前在Docker Server 部分谈及的,创建Server 服务于HTTP 协议的API,这也是一个Job,
等等。
有关Job 接口的设计,与UNIX 进程非常相仿。比如说,Job 有一个名称,有运行时参
数,有环境变量,有标准输入与标准输出,有标准错误,还有返回状态等。
对于Job 而言,定义完毕之后,运行才能完成Job 自身真正的使命。Job 的运行函数
Run() 则用以执行Job 本身。

Docker Registry

Docker Registry 是一个存储容器镜像(Docker Image)的仓库。公有Registry 与私有
Regsitry 就是两种场景模式不同的Docker Registry。其中,大家熟知的Docker Hub,就是全
球范围内最大的公有Registry。Docker 可以通过互联网访问Docker Hub,并下载容器镜像;
同时Docker 也允许用户构建本地私有Registry,使容器镜像的获取在内网完成。

Graph

Graph 在Docker 架构中扮演的角色是容器镜像的保管者。不论是Docker 下载的镜像,
还是Docker 构建的镜像,均由Graph 统一化管理。

0 0
原创粉丝点击