docker理论方面的东西

上篇写了docker实践方面的东西,想想还是补充一下理论方面的吧,也好成为一个体系,方便学习。

docker可以用运输业的集装箱来形象表示,没有集装箱之前,货物运输是这样的:

docker理论方面的东西_第1张图片

这种情况下,货物怎么运输,哪种运输工具运送哪种货物,没有一个标准,实际货物运输起来将会非常杂乱,形成如下的类似于全排列的东西

看看这个,是不是花眼了,没有统一的标准,就会带来大量的局限性,试想一下,火车要适应运输所有货物的任务,那么它要做多少改造,这是一种对运力巨大的浪费,有了docker之后就是这样了

docker将所有的内部实现包装起来,只留下外部统一的接口,负责和宿主机进行交互,就跟jvm一个道理,不管里面实现多么复杂,对外都是统一的接口,真正实现了一次打包,随处运行的的目标。

那么docker究竟是什么呢

Docker 能将应用封装成一个标准化单元,称作镜像,里面包含了应用运行所需的一切:系统工具/库、运行时、应用代码等。镜像具有自包含的特点。这样就保证了,不管在什么硬件环境下,应用都能一致的运行。

它有如下特性

轻量

多个Docker容器共享同一个宿主机操作系统内核;
秒级启动;
镜像使用分层文件系统,共享相同层,节省磁盘;
开放
遵循开放标准(OCI):国内外各大公司都共同参与;
运行在Linux/Windows/Mac以及任何基础设施之上;
安全
容器将应用和基础设施隔离;
相比较虚拟机,docker优势很明显,docker使用的内核技术:
Namespace:用于进程隔离,可以隔离文件系统、PID、IPC、网络、UTS、USER等;
Cgroup:用于进程资源控制,可以控制进程CPU、内存等资源的使用量。
或许下边这两张图会更加直观一点吧

好了,理论方面的大概就这些,其实这些也是借鉴各种资料,毕竟理论方面的东西,大部分人都是这么来的!还是那句话,不重复制造轮子,看完这篇,配合上一篇,相信会满足初级docker学习者的要求吧!纯属学习笔记,非喜勿喷!




你可能感兴趣的:(docker)