一、docker平台
Docker提供了在一个 容器 中打包运行应用的能力。容器是隔离的,允许一个主机上同时运行多个 容器 。容器 是轻量级的,因为它不用加载额外的 管理程序(hypervisor),
二、docker引擎
docker引擎是一个客服端服务程序,它包括以下几个部分:
- server:是一个长时间运行的程序,叫做 守护进程。
- REST API:是一个restful 的接口,用以和 守护进程 进行通信并指导 守护进程 工作。
- Client docker CLI:命令行客户端。
三、可以用docker做什么
- 快速的、一致的传递应用
docker简化了部署的流程。这是通过让开发人员直接在标准环境下开发实现的。 - 响应式部署和扩展
- 同样的硬件设备,可以运行做更多的工作
以上都和docker的轻量和快速有很大的关系。
四、docker的架构
docker采用的是 客户-服务 的架构。docker客户端 可以和服务器端(守护进程)可以在同一个主机上,也可以在不同的主机上。docker客户端 和服务器端是通过REST API,UNIX套接字、网络接口进行通信的。
- docker守护进程
负责监听api请求,并管理docker对象(如image,container,networks,volumes)
- docker客户端
用于可 docker守护进程 进行通信
- docker注册表
Docker 注册表存储Docker镜像
- docker对象
images:是一个只读的模板,用以创建容器
container:是一个镜像的运行实例
service:允许通过允许多个docker守护进程来扩展我们的容器
五、底层技术
docker是使用go语言编写的,它利用了linux内核的几个特点来实现其功能的。
- 命名空间
容器的隔离性就是用这个实现的。 - 控制组
控制组允许Docker Engine将可用的硬件资源共享给容器,并可选择强制执行限制和约束。例如,您可以限制特定容器的可用内存。 - 联合文件系统
联合文件系统或UnionFS是通过创建层来操作的文件系统,使它们非常轻量和快速 - 容器格式
docker引擎 将 命名空间 、控制组 、联合文件系统 整合到一起,这个东西就叫做 容器格式 。默认的容器格式是libcontainer
。