上一篇在centos7上安装了docker。在开始正式学习docker的相关概念和知识之前,我们来简单了解和学习了docker架构和底层技术实现。先从宏观上过一遍docker的架构和底层技术实现,后续文章慢慢学习docker具体知识,后面学习,我们会慢慢理解docker的架构和一些底层技术。

      首先要强调的是docker,也就是容器技术不是一个创新的技术,因为容器早在很早之前就提出了这个概念,最早是在linux上,而且docker很多底层技术实现都是依赖了linux的底层技术。

Docker平台

docker 构架 docker系统架构底层技术_linux

Docker提供了一个开发、打包、运行app的平台
Docker把app和底层infrastructure隔离开来
上面这两个特点是我们从整体上得到的。

 

Docker Engine

什么是Docker Engine, docker Engine是docker平台一个很重要的、核心组件。

docker 构架 docker系统架构底层技术_docker_02

上面这个图,分成了三层。

1)后台进程(dockerd)

这个后台进程dockerd,有点相当于linux中的内核,我们通过查看进程可以找到这个dockerd进程是在运行的。

docker 构架 docker系统架构底层技术_linux_03

Dockerd服务主要管理网络,数据存储,容器和镜像。

2)REST API

我们之所以能通过docker –v 查找出来docker的版本号,就是因为调用了接口。

docker 构架 docker系统架构底层技术_docker 构架_04

Docker就是采用了C/S架构,client端就是我们输入docker –v的机器,后台就是dockerd这个server,通过REST API来处理各种请求。例如容器和镜像的操作管理,这些docker命令其实就是一个个API。

3)Client docker CLI

CLI就是命令行接口,这个叫docker CLI, 就好像shell CLI, 之所以,我们在各种命令前面都加上docker,就是为了和其他CLI区分开来。例如和shell区分,有些公司的SDK也提供了类似的 CLI. 这个是一个客户端组件,提供用户输入命令并显示请求结果的一个组件。

 

Docker 架构

对着这张图,和你自己安装的centos 虚拟机,应该能明白一些了吧。

docker 构架 docker系统架构底层技术_Docker_05

我们虚拟机中图中的Client和DOCKER_HOST其实在一台机器上
Registry就是docker镜像仓库中心,可以是hub.docker.com这个,也可以是自己公司自定义的镜像仓库。
镜像可以制作好push到远程镜像仓库,也可以从远程仓库pull到本地机器。
 

 

 

底层技术实现

Namespaces:

做隔离pid, net,ipc,mnt,uts

Control group

做资源限制

Union file systems

容器和镜像分层