二、Docker 容器技术与虚拟机的区别
Docker 到底是个什么东西呢?我们在理解 Docker 之前,首先得先区分清楚两个概念,容器和虚拟机。
虚拟机
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。
可能很多读者朋友都用过虚拟机,而对容器这个概念比较的陌生。我们用的传统虚拟机如 VMware , VisualBox 之类的需要模拟整台机器包括硬件。
每台虚拟机都需要有自己的操作系统,虚拟机一旦被开启,预分配给它的资源将全部被占用。
每一台虚拟机包括应用,必要的二进制和库,以及一个完整的用户操作系统。
容器
Docker 容器是一个开源的应用容器引擎,让开发者可以以统一的方式打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何安装了docker引擎的服务器上(包括流行的Linux机器、windows机器),也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。
而容器技术是和我们的宿主机共享硬件资源及操作系统,可以实现资源的动态分配。
容器包含应用和其所有的依赖包,但是与其他容器共享内核。容器在宿主机操作系统中,在用户空间以分离的进程运行。
容器技术是实现操作系统虚拟化的一种途径,可以让您在资源受到隔离的进程中运行应用程序及其依赖关系。
通过使用容器,我们可以轻松打包应用程序的代码、配置和依赖关系,将其变成容易使用的构建块,从而实现环境一致性、运营效率、开发人员生产力和版本控制等诸多目标。
容器可以帮助保证应用程序快速、可靠、一致地部署,其间不受部署环境的影响。
容器还赋予我们对资源更多的精细化控制能力,让我们的基础设施效率更高。
今日学习寄语:
1、要么做第一个,要么做最好的一个。
2、信念和目标,必须永远洋溢在程序员内心。3、最累的时候,家人是你最好的归宿。
4、C程序员永远不会灭亡。他们只是cast成了void。
5、真正的程序员认为自己比用户更明白用户需要什么。
6、退一步海阔天空,这是一种应有的心境。
7、过去的代码都是未经测试的代码。
8、优秀的判断力来自经验,但经验来自于错误的判断。
9、测试是来表明bug的存在而不是不存在。
10、我们这个世界的一个问题是,蠢人信誓旦旦,智人满腹狐疑。
11、一个好汉三个帮,程序员同样如此。
12、看再多的书是学不全脚本的,要多实践。13、无私奉献不是天方夜谭,有时候,我们也可以做到。
14、世界上只有两句真理:1、人一定会死。2、程序一定有Bug。
15、UNIX很简单。但需要有一定天赋的人才能理解这种简单。
16、程序中蕴含着很多的道理,唯有大彻大悟者方能体会其中的奥妙。
17、编程中我们会遇到多少挫折?表放弃,沙漠尽头必是绿洲。
18、做技术一定要一颗恒心,这样才不会半途而废。
19、不要被对象、属性、方法等词汇所迷惑;最根本的是先了解最基础知识。
20、请把书上的例子亲手到电脑上实践,即使配套光盘中有源文件。