开发者学堂课程【Docker 快速入门:Docker 运行底层原理】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/850/detail/14034
Docker运行底层原理
内容介绍
一、Docker 运行底层原理
一、Docker 运行底层原理
通过前面的学习,已经成功运行了 docker Hello world,本期环境全部配置成功,再次强调这埋下一个伏笔,hello world 注意,有个冒号,有个 latest,
是这样的形式才是一个完整的。镜像名字,但是一般而言不写,不写代表默认,添加这一个说明是最新版,如果这写冒号,不是最新版,也许是5.2版本,需要哪个版本就在后面写一个版本,后面讲标签的时候还会再讲,这里先提下,hello world 彻底完成,接下来要看 docker 运行的机制和原理。
回顾讲过的知识点,一个安装运行,另一个 hello world,第一个命令 docker,问题是在深度的解析,这 docker 是 docker service Docker 。restart 下非常快,比虚拟机要快,第二个 docker 底层原理又是怎么工作的呢?
docker 是个 CS 结构,服务器端和客户端包括的守护进程运行在主机上,刚才查了, CS 命令不用挑竖线 grape Dr 是有一个进程,客户端命令跟 docker 打交道,实质而言是:
Docker 是一个 Client-Server 结构的系统,Docker 守护进程运行在主机上,然后通过 Socket 连接从客户端访问,守护进程从客户端接受命令并管理运行在主机上的容器。容器是一个运行时环境,就是我们前面说到的集装箱。
守护进程,作为接口服务端,来进行 docker 的处理,从客户端访问守护进程,客户端接受了命令,并管理运行在主机上的容器,容器是个运行时环境,就是集装箱,docker run hello world 主机上只有低保内部的接口人是守护进程 docker,docker 容器就是一个集装箱,既然运行 hello world,如法炮制后续运行环境,Spark tomcat mysql hadoop,也可以放在一个的集装箱上面,通过客户端来操作,这是第一个。
第二个前面说过虚拟机是分装的,docker 是秒级的
为什么它比虚拟机快?橙色有两个,第一个 dota 有更少的抽象层,什么是更少的抽象层?前面说过一个虚拟机是软件加硬件,是一个完整的操作系统,有这些负担,有这些硬件,但是 docker 不需要 preparation,实现硬件虚拟化资源,可能会觉得奇怪,左边是传统的虚拟机的模型, host operation system 是假设是Windows she,在上面装了个虚拟机 win,上面又装了生产
helper version 有一个接口,docker 厉害是它清除了,这时 docker 还是操作系统,这一层将它清除掉,减少了硬件资源的虚拟化,换成了 docker 引擎,docker是没有硬件负担的, docker 在利用效率上比虚拟好,第二个在虚拟机上面,这里可以装三套,创建新的虚拟机,下一步,可以装各种各样的操作系统。
但是在同一个虚拟机软件上面已经装了,假设是 ubuntu,WINDOWS8 每个系统上面有一套库:
各种应用,那 docker 呢?系统不关心下面是什么系统,只知道有一个系统,硬件资源,宿主机的资源统一用,docker,这只蓝鲸,大金鱼,不需要客户端的操作系统,因此当新建一个容器时,docker 不需要和虚拟机重新加载一个操作系统内核,比如 OS,再启动一个新的点一下,这样特别慢。
因为虚拟机上有一个操作系统,而系统上只有一个 docker 引擎,自然而然加载过程反馈比较耗时,比较费时,也耗资源,新建一个虚拟机,需要加载操作系统,新建过程是分钟级别的,docker 没有这些累赘和拖累。用宿主机共用这些资源加载,一个一个的集装箱,每一个集装箱面试一个应用,不用自带一套,只带一个 docker用就可以,所以docker和虚拟机这章,还是个小重点。
面试中有问到过:说一下虚拟机和容器虚拟化技术,docker 和虚拟机的特点,部署速度,硬件亲和性。虚拟机面向硬件 docker 印象软件,一个是秒级,一个是分钟级,各种移植了什么?明白 docker 就删除掉虚拟机的各自的操作系统和 provision硬件虚拟化资源。
所以虚拟机的这两块被删除掉,只用 docker 引擎,这就是 docker 出彩的地方,后续将要在 docker 下来进一步来探讨容器。以及一个一个运行的容器实力如何,软件开发相配合。如何完全交给运维镜像,通过镜像模拟出一模一样的运行环境,在本地运行,部署就变得非常方便,不会出现在开发环境是可以的,换了个机器就不行了,docker 的底层原理,就叙述到这里。



