大家好,我是脚丫先生 (o^^o)
众所周知Docker是一款以容器虚拟化技术为基础的软件,正所谓万丈高楼平地起,在了解有关 Docker 的概念知识和使用方法之前,虚拟化和容器技术是我们不可或缺的基础知识。
Docker介绍
一、什么是虚拟化
在计算机中,虚拟化(英语:Virtualization):是一种将计算机物理资源,如:服务器、网络、内存、存储等等,进行抽象、转换为虚拟的计算机资源提供给程序使用的技术。简而言之,就是把一台物理计算机虚拟成多台逻辑计算机,每个逻辑计算机里面可以运行不同的操作系统,相互不受影响,这样就可以充分利用硬件资源。
举个例子:
一块地有100平方,没有虚拟化技术时只能盖一层平房,现在有虚拟化技术了,可以盖五层,十层。同样一台服务器,之前只能玩一个操作系统,现在通过虚拟化可以搞定几十个虚拟主机操作系统环境。
二、初识Docker
Docker 是一个开源的应用容器引擎,也是一种虚拟化技术,属于轻量级的虚拟化。可以这么去理解docker,如上图Logo所示:鲸鱼和集装箱。
大鲸鱼就是操作系统,我们把要交付的应用程序看成是各种货物,原本要将各种各样形状、尺寸不同的货物放到大鲸鱼上,你得为每件货物考虑怎么安放(就是应用程序配套的环境),还得考虑货物和货物是否能叠起来(应用程序依赖的环境是否会冲突)。现在使用了集装箱(容器)把每件货物都放到集装箱里,并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响,这样大鲸鱼可以用同样地方式安放、堆叠集装了,省事省时省力,美滋滋。
学习docker最吸引人的地方: 在于简化部署,随时迁移,优化运维管理。随着互联网的飞速发展,应用系统架构日趋复杂,不同程序模块依赖的环境千奇百怪,导致部署一套环境成本越来越高,而且不便于迁移和管理。而在使用docker之后,可以把不同的程序分别打包成镜像,只需要管理这些镜像即可。可以这么理解:一个镜像好比一个人,培养小王为数学家,专门负责数学相关的事。培养小李为语言学家,专门负责语言相关的事。体现到虚拟机上,就是这样:
mysql镜像和redis镜像分别负责着各自的业务功能,不需要泪流满面的去安装和适配各种依赖环境。docker创建的镜像,只需要三秒,开箱即用。突然有一种悄悄拔高,立马惊艳的感觉...nice.
Docker镜像的设计,突破了以往程序即应用的观念,通过Docker镜像 ( images ) 将应用程序所需要的系统环境,由下而上打包,达到应用程序跨平台间的无缝接轨运作。
三、Docker与虚拟机的形象比喻
1、物理机
物理机就好比一栋楼一户人家,
2、虚拟机
3、容器
四、虚拟机 VS 容器
1、物理机
物理机是相对于虚拟机而言的对实体计算机的称呼。物理机提供给虚拟机以硬件环境,有时也称为“寄主”或“宿主”。就好比,你去电脑城买各种配件,CPU、显卡啊,硬盘等组装起来,得到的一台电脑就是物理机。它是实实在在的硬件。
2、虚拟机
所谓虚拟机(Virtual Machine): 就是通过软件方法利用一台物理电脑的硬盘和内存可虚拟出若干台机器。它是电脑中的电脑,是利用软件虚拟出来的计算机,是在现有的操作系统上虚拟出来的一个完全隔离环境中的完整计算机系统。
虚拟机(Virtual Machine)技术: 就是通过软件工具模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。利用这种技术,可以在现有的计算机的操作系统中建立多个同构或异构的虚拟计算机系统。这些虚拟计算机系统既包括自己虚拟的内存、CPU处理器、硬盘、CD/DVD、网络适配器、USB控制器、声卡、显示器等硬件设备,又可以安装或使用各种操作系统、软件工具等。
我们可以这么理解:虚拟机就是就是一个程序,模拟成电脑,能安装任何的操作系统。 即,一个物理硬件层抽象,用于将一台服务器变为多台服务器,管理程序允许多个VM在一台机器上运行,每个VM包含一整套操作系统,一个或者多个应用、必要的二进制文件和资源库,因此占用大量空间,启动也比较缓慢。
3、容器
容器技术是一种全新意义上的虚拟化技术,按分类或者实现方式来说,其应该属于操作系统虚拟化的范畴,也就是在由操作系统提供虚拟化的支持。它是一个应用层的抽象,用于将代码和依赖资源打包在一起,多个容器可以在一台机器上运行,共享操作系统内核,但各自作为独立的进程在用户空间中运行,与虚拟机相比,容器占用空间较少,秒钟就能完成启动。
4、小结
我们可以通过虚拟机和容器技术的剖析图来进行分析,就更加容易从直观上对两者的区别进行理解。
容器由于没有了虚拟操作系统和虚拟机监视器这两个层次,大幅减少了应用程序运行带来的额外消耗。
- 容器 是一个应用层抽象,用于将代码和依赖资源打包在一起。 多个容器可以在同一台机器上运行,共享操作系统内核,但各自作为独立的进程在用户空间中运行 。与虚拟机相比, 容器占用的空间较少(容器镜像大小通常只有几十兆),瞬间就能完成启动 。
- 虚拟机(VM)是一个物理硬件层抽象,用于将一台服务器变成多台服务器。 管理程序允许多个VM在一台机器上运行。每个VM都包含一整套操作系统、一个或多个应用、必要的二进制文件和库资源,因此占用大量空间。而且VM启动也十分缓慢 。
- 虚拟机和容器有不同的使用场景。虚拟机更擅长于彻底隔离整个运行环境。例如,云服务提供商通常采用虚拟机技术隔离不同的用户。而Docker通常用于隔离不同的应用 ,例如前端,后端以及数据库。
特性 | 虚拟机 | 容器 |
---|---|---|
隔离级别 | 操作系统级别 | 进程级 |
隔离策略 | 运行于Hypervisor上 | 直接运行在宿主机内核中 |
系统资源 | 5-15% | 0-5% |
启动速度 | 慢,分钟级 | 快,秒级 |
占用磁盘空间 | 非常大,GB-TB级 | 小,KB-MB |
并发性 | 一台宿主机十几个,最多几十个 | 上百个,甚至上百上千个 |
高可用策略 | 备份、容灾、迁移 | 弹性、负载、动态 |
祝各位终有所成,收获满满!
我是脚丫先生,我们下期见~