Docker初体验心得笔记
无意中突然想接触Docker这个东西,接触了一段时间后,现有心得需要记录。
什么是Docker?
说实话,看到官方的定义我并没有一眼弄清楚,然而在实际操作过程中一点一点解开了Docker的神秘的面纱。
简单来说,Docker是一种精简化的虚拟机。
先看一下,传统的虚拟机架构。(图片来源于Docker官方文档)
可以看到,图中“VM”就是一个传统虚拟机,它包含了虚拟机操作系统(Guest OS),在此之上存在二进制函数库(Bins/Libs)和软件应用(APP)。这个传统的虚拟机建立在宿主机之上。来看一下Docker这个虚拟机有什么不同点。(图片来源于Docker官方文档)
可以看到,Docker在宿主机上建立Docker服务,Docker服务上有很多的“容器”。每一个容器就是每一个虚拟机,每一个虚拟机都省去了虚拟机操作系统。只保留了所需要的函数库和应用。
所以说,从某一种角度来看,Docker是一种精简化的虚拟机。
Docker这样设计有什么优势?
- 轻量化。虚拟机规模缩小了,变得简单。
- 移植性好。相对于传统的虚拟机的移植到别的机器上,开销要少的多。
- 启动速度快。传统虚拟机开机启动面向分钟级,Docker启动时秒级。
- 更简单的定制化自己地Docker虚拟机。自己可以定制化Docker虚拟机,可以分享等等。
- ……
“镜像”概念的理解
其实呢,我以前装过操作系统,装操作系统就需要后缀名为ISO镜像,利用ISO镜像去安装操作系统。不一样ISO操作系统镜像内置的应用软件也不相同,但都是安装完操作系统,他们就不必再去安装了,可以直接拿来就用了。这也是方便了我们,不用再去花费时间和精力安装系统环境和应用软件。对比来看Docker中的镜像概念也是这样。开发人员制作自己镜像,可以直接移植到别人的机器中,直接拿来用就可以了,不用搭建所需环境。可以说,这种镜像从制作到实际安装到机器中,体现了可移植性高的特点。这是Docker特点之一。
“容器”概念的理解
容器可以简单理解为就是用镜像安装好的虚拟机。
“镜像”和“容器”关系
类比面向对象设计思想,镜像就是类,容器就是实例化出来的对象。
以上就是我对Docker几个概念的片面理解。难免有些错误的地方,恳请老师们多多指正。