Docker本质
Docker 本质其实是 LXC 之类的增强版,它本身不是容器,而是容器的易用工具。容器是 linux 内核中的技术,Docker 只是把这种技术在使用上简易普及了。Docker 在早期的版本其核心就是 LXC 的二次封装发行版。
Docker 作为容器技术的一个实现,或者说让容器技术普及开来的最成功的实现。 Docker 是基于 Go 语言实现的一个开源项目,它的主要目标是“Build,Ship and Run Any APP,Anywhere”,即通过对组件的封装、分发、部署、运行等生命周期的 管理,使得用户的应用及其运行环境能够做到“一次封装,到处运行”。
早期 Docker 利用 LXC 做容器管理引擎,但是在创建容器时,不再使用模板去安装生 成,而是通过镜像技术(把一个操作系统用户空间所需要使用到的组件事先编排好, 并整体打包成一个文件,image 文件),镜像文件集中放在一个仓库中。当需要创建容 器时,Docker 调用 LXC 的工具 lxc-create,但不再通过 lxc 的模板去安装,而是连接 到镜像服务器上下载匹配的镜像文件,而后基于镜像启动容器。所以,Docker 极大的 简化了容器的使用难度。以后我们创建启动容器,只需要一个命令, docker-run, docker-stop 就可以启动停止一个容器了。
Docker 的引擎迭代
Docker 早期是基于 LXC 容器管理引擎实现,当后来成熟之后,Docker 自建了一个容 器引擎叫 libcontainer,后来 CNCF 的介入,Docker 又研发了一个工业化标准的容器 引擎 runC,目前所使用的新版 Docker,所使用的容器引擎就是 RunC。
Docker 和虚拟机的区别
传统虚拟机 |
Docker 容器 |
||
磁盘 占用 |
几个 GB 到几十个 GB 左右 |
几十 MB 到几百 MB 左右 |
|
CPU 内存 占用 |
虚拟操作系统非常占用 CPU 和内存,需要通 过虚拟层调用占用率高 |
Docker 引擎占用资源极低,直接作用于硬件资源 占用少 |
|
启动 速度 |