原标题:Docker&Vmware有什么区别呢?你怎么看?

Docker 是一个开源的应用容器引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。

简单的理解,Docker类似于集装箱,各式各样的货物,经过集装箱的标准化进行托管,而集装箱和集装箱之间没有影响。也就是说,Docker平台就是一个软件集装箱化平台,这就意味着我们自己可以构建应用程序,将其依赖关系一起打包到一个容器中,然后这容器就很容易运送到其他的机器上进行运行,而且非常易于装载、复制、移除,非常适合软件弹性架构。就像Docker的logo一样。


Docker&Vmware区别:


虚拟机运行多个相互隔离的应用时,如下图:


基础设施(Infrastructure)。比如:个人pc或者服务器。

主机操作系统(Host Operating System)。个人电脑之上,运行的MacOS或者Windows系统。

虚拟机管理系统(Hypervisor)。利用Hypervisor,可以在主机操作系统之上运行多个不同的从操作系统。比如安装的VirtualBox和VMWare。

从机操作系统(Guest Operating System)。vmware里面安装多个Centos7的系统,假设运行3个相互隔离的应用,则需要启动3个Linux系统,也就是3个虚拟机。这些虚拟机都非常大,如果一个虚拟机有20GB,那么意味着它们将占用60GB的磁盘空间。更糟糕的是,它们还会消耗很多CPU和内存。

各种依赖。每一个从操作系统都需要安装许多依赖。如果你的的应用需要连接PostgreSQL的话,则需要安装libpq-dev;如果你使用Ruby的话,应该需要安装gems,都会需要安装对应的依赖库。

应用。安装依赖之后,就可以在各个从操作系统分别运行应用了,这样各个应用就是相互隔离的。

Docker容器的相同设置:


基础设施(Infrastructure)。比如:个人pc或者服务器。

主机操作系统(Host Operating System)。所有主流的Linux发行版都可以运行Docker。对于MacOS和Windows,也有一些办法”运行”Docker。

Docker守护进程(Docker Daemon)。Docker守护进程取代了Hypervisor,它是运行在操作系统之上的后台进程,负责管理Docker容器。

各种依赖。对于Docker,应用的所有依赖都打包在Docker镜像中,Docker容器是基于Docker镜像创建的。

应用。应用的源代码与它的依赖都打包在Docker镜像中,不同的应用需要不同的Docker镜像。不同的应用运行在不同的Docker容器中,它们是相互隔离的。

总结:

两者有不同的使用场景。虚拟机更擅长于彻底隔离整个运行环境(Linux图片就可以看出来)。例如,云服务提供商通常采用虚拟机技术隔离不同的用户。而Docker通常用于隔离不同的应用,例如前端,后端以及数据库。所以要根据不同的场景灵活使用。