前面,不管你是win10安装docker环境还是,在一个虚拟机的centos7上安装docker,我默认你已经学会了docker的安装。在开始正式学习docker的相关概念和知识之前,我们来简单了解和学习了docker架构和底层技术实现。先从宏观上过一遍docker的架构和底层技术实现,后续文章慢慢学习docker具体知识,后面学习,我们会慢慢理解docker的架构和一些底层技术。

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

Docker平台

 

  1. Docker提供了一个开发、打包、运行app的平台
  2. Docker把app和底层infrastructure隔离开来

上面这两个特点是我们从整体上得到的。

 

Docker Engine

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

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

1)后台进程(dockerd)

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

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

2)REST API

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

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 虚拟机,应该能明白一些了吧。

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

 

底层技术实现

Namespaces:

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

Control group

做资源限制

Union file systems

容器和镜像分层

 

这三个技术其实都是Linux早就在运用的技术,现在不懂,没关系。这需要很强Linux知识才能知道这三个技术。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐