什么是docker?

虚拟化

docker是一种虚拟化的方法,那什么是虚拟化呢?
做一个比喻:假如你拥有一套自己的房子,而现在呢,你的朋友需要一个长期睡觉的地方,寻求你的帮助。你有三种方法帮助他。。。
1、让你的朋友陪你睡一张床(个人不建议这样,万一你的朋友对你xxx,不敢想象)
2、去你家物业那再给他建造一套房子(个人也不建议这样,耗资耗时耗力,除非你有钱,有钱,嗯,有钱)
3、把你家的客卧让出来给他使用(强烈推荐,这样你俩的生活并不耽误,而且还有很多公共的资源可以一起使用)

虚拟化就像在你的客卧室里安排你的朋友一样。想象一下,您想在计算机上运行Web服务器。您希望将其与您自己的操作系统和应用程序分开。为此,您可以运行包含Web服务器的虚拟机。它像一*立的计算机一样运行,但它使用计算机的处理器和RAM。启动虚拟机时,其整个操作系统将显示在操作系统内的窗口中。

那什么是docker呢?

什么是docker?
这个是docker的logo,从图上来看,docker就像一个蓝鲸鱼模样的船,船上装满了集装箱。所以这就很好的诠释了docker,它就像一个容器,这些集装箱就像它的镜像,需要什么,你就装什么。

大家都该了解VMware吧,道理其实和它差不多,用户操作docker容器就像操作一个快速轻量级的虚拟机一样简单。

那我们为什么要选择docker呢?

(1)上手快
用户只需要几分钟,就可以把自己的程序“Docker化”,Docker依赖于“写时复制”(copy-on-write)模型,使修改程序也非常迅速,可以说达到随心所欲。
随后就可以创建容器来运行程序了,大多数docker容器只需不到一秒就启动了。由于去掉了管理程序的开销,docker容器拥有很高的性能,同时,同一台宿主机可以运行更多的容器,使用户尽可能的充分利用系统资源。
(2)职责的逻辑分类
使用docker,开发人员只需关心容器中运行的程序,而运维人员只需关心如何管理容器。docker的设计主要就是加强开发人员写代码的开发环境与生产环境一致,从而降低那种“开发环境一切正常,生产环境全是bug”的问题。
(3)快速高效的开发生命周期
docker的目的之一就是缩短代码从开发、测试、部署到上线的周期,让你的应用程序具备可移植性,易于构建,并易于写作(通俗的讲:docker就像一个大盒子,里面装着很多的小物件,如果想取这些小物件,没必要一个一个的取,可以直接将大盒子拿走)
(4)鼓励使用面向服务的架构
docker还鼓励使用面向服务的体系结构和微服务架构,docker推荐单个容器只运行一个应用程序或进程,这样就形成了一个分布式的应用程序模型,在这种模型下,应用程序或者服务都可以表示为一系列内部互联的容器,从而使分布式部署应用程序,扩展或调试应用程序都变的非常简单,同时也提高了程序内省性。(当然,也可以在一个容器内运行多个程序)

容器与虚拟机相比较

docker与虚拟机最底层实现一致什么是docker?
但是,虚拟机会虚拟出与本机不同的操作系统,而docker容器是需要依赖本机系统的。

虚拟机虚拟的个数是有限的,占用体积、内存比较大。而容器方式可减少这种限制。启动也是比较快的。

以上内容都是我个人对docker的理解及一些借鉴,希望对你有帮助。