前言:参与OpenDCP的研发已有两个多月,期间阅读了不少Docker相关的书籍、博客等资料,在此对所学内容进行一个梳理,方便日后翻看。
一、Docker简介
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
二、Docker的核心优势:
- Docker是一种轻量级的虚拟化技术,启动时间为毫秒级(VM通常是分钟级)
- 通过Docker镜像可以快速构建标准开发环境(一般为几十M至几百M,而VM的镜像则可能有几个G)
- 通过DockerFile进行更简单的更新管理,所有的修改都以增量的方式进行分发和更新。
- 跨平台特性,包括私有云、公有云、虚拟机、裸机等
三、Docker与虚拟机比较
可以看出,相较于传统虚拟机,Docker没有实现Guest OS。而Docker守护进程可以直接与主操作系统进行通信,为各个Docker容器分配资源;
它还可以将容器与主操作系统隔离,并将各个容器互相隔离。虚拟机启动需要数分钟,而Docker容器可以在数毫秒内启动。由于没有臃肿的从操作系统,Docker可以节省大量的磁盘空间以及其他系统资源。
四、Docker的C/S架构
Docker是Client/Server的架构,Docker客户端与Docker daemon进行交互,daemon负责构建、运行和发布Docker容器。客户端可以和服务端运行在同一个系统中,也可以连接远程的daemon。Docker的客户端的daemon通过RESTful API进行socket通信。
如上图,Docker守护进程(daemon)在主机上运行,用户不能直接和守护进程打交道,但是可以通过Docker客户端与其进行交互;Client是Docker的初始用户界面,它接收用户的命令并反馈,并且与Docker的守护进行交互