开篇
- Docker提供了一个开发,打包,运行APP的平台
- 把APP和底层infrastructure隔离开来
从上面的简图我们可以看到,docker把物理设备 / 虚拟设备和Application隔离开来。
Docker Engine
Docker Engine包含的东西有:
* 后台进程(dockerd)
* REST API Server
* CLI 接口(dockerd)
docker的架构是C/S架构,docker的Client和Server即(dockerd)之间通过REST API Server进行通信。
dockerd主要是维护后台的一些常见概念的操作,例如:image、container的管理,网络以及存储的管理。
在CentOS中运行 sudo docker version
命令,可以看到Client 以及 Server 的一些信息:
Docker架构总览
* 左边Client 是我们命令行里常用的一些命令。
* 中间Docker Host,是安装Docker之后的机器,只要包括Container 和 images。Docker Host提供的REST API 可以供Client去使用。
* 最右边是docker的Registry,是用于存储docker公共镜像的服务器,类似于GitHub。
Docker底层技术支持
Docker底层是依赖于Linux已经存在很多年的技术支持,比如说:
* Namespaces:做隔离pid,net,ipc,mnt,uts
* Control grups:做资源限制
* Union file systems:Container 和 image的分层