平常我们使用的Vmware虚拟化的目标都是一台完整的计算机,拥有底层的物理硬件、操作系统和应用程序执行的完整环境。为了让虚拟机中的程序实现像在真实物理机器上运行“近似”的效果,背后的HyperVisor做了大量的工作,付出了“沉重”的代价。
虽然HyperVisor做了这么多,但你有没有问过虚拟机中的程序,这是它想要的吗?
或许HyperVisor给的太多,而目标程序却说了一句:你其实可以不用这样辛苦。
确实存在这样的情况,虚拟机中的程序说:我只是想要一个单独的执行环境,不需要你费那么大劲去虚拟出一个完整的计算机来。
虚拟出一台计算机的成本高还是只虚拟出一个隔离的程序运行环境的成本高?答案很明显是前者。一台物理机可能同时虚拟出10台虚拟机就已经开始感到乏力了,但同时虚拟出100个虚拟的执行环境却还是能够从容应对,这对于资源的充分利用可是有巨大的好处。
因此容器技术正是在这样的指导思想下诞生的。
而Docker是实现容器的技术之一。
使用Docker容器技术之前,一个后端程序从开发到上线部署的过程:
可以看到开发和运维需要进行同样的工作,还要修改配置,再加上是人为操作,还有可能出错,是非常耗费时间的。
而 有了Docker容器技术之后,这个过程就会变得尤其简单,在程序开发完毕后,编写dockerfile脚本(可以开发人员做,也可以运维人员来做),而这个脚本完成的效果就是将代码和相关环境依赖全部打包成一个镜像文件(docker image,下面会详细解释) ,然后直接将这个镜像发给其他人员即可,其他人员只需要运行该镜像,这个程序就可以直接运行了,无需像之前一样进行各种配置,各种询问。
作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。
对比传统虚拟机总结:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。