发布网友 发布时间:2022-04-20 13:26
共3个回答
懂视网 时间:2022-04-20 17:48
docker和虚拟机的区别有:
1、虚拟机启动需要数分钟,而Docker容器可以在数毫秒内启动,由于没有臃肿的从操作系统,Docker可以节省大量的磁盘空间以及其他系统资源;
2、虚拟机更擅长于彻底隔离整个运行环境。例如,云服务提供商通常采用虚拟机技术隔离不同的用户。而Docker通常用于隔离不同的应用,例如前端,后端以及数据库。
热心网友 时间:2022-04-20 14:56
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app)。几乎没有性能开销,可以很容易地在机器和数据中心中运行。最重要的是,他们不依赖于任何语言、框架包括系统。
在docker的网站上提到了docker的典型场景:
Automating the packaging and deployment of applications
Creation of lightweight, private PAAS environments
Automated testing and continuous integration/deployment
Deploying and scaling web apps, databases and backend services
由于其基于LXC的轻量级虚拟化的特点,docker相比KVM之类最明显的特点就是启动快,资源占用小。因此对于构建隔离的标准化的运行环境,轻量级的PaaS(如dokku), 构建自动化测试和持续集成环境,以及一切可以横向扩展的应用(尤其是需要快速启停来应对峰谷的web应用)。
热心网友 时间:2022-04-20 16:14
IBM研究部门发表了一篇关于容器和虚拟机环境性能比较的论文。这篇论文使用了Docker和KVM作为研究对象,阐述了Docker使用NAT或AUFS时的开销,并且质疑了在虚拟机上运行容器的实践方法。
论文作者在原生、容器和虚拟化环境中运行了CPU、内存、网络和I/O的benchmark。其中,分别使用KVM和Docker作为虚拟化和容器技术的代表。Benchmark也包含了对不同环境下Redis和MySQL负载的采样。通过小数据包和多客户端,Redis侧重于网络栈的性能。而MySQL侧重于内存,网络和文件系统的性能。
结果显示,在每一项测试中,Docker的性能等同于或超出KVM的性能。在CPU和内存性能方面,KVM和Docker都引入了明显的,但可略不计的开销。但是,对于I/O密集型的应用,两者都需要进行调整以减少开销带来的影响。
当使用AUFS存储文件时,Docker的性能会降低。而相比之下,使用卷(volume)能够获得更好的性能。卷是一种专门设计的目录,存在于一个或多个容器内。通过这种目录能够绕过联合文件系统(union file system)。这样它就没有了存储后端可能带来的开销。默认的AUFS后端会引起显著的I/O开销,特别是当有多层目录深度嵌套的时候。
Docker的默认网络选项,--net=bridge,由于NAT会重写数据包,也引入了性能开销。当数据包收发率变高时,这种开销会变得很明显。可以通过使用--net=host改善网络的性能。这个选项告诉Docker不要为容器创建一个的网络栈,并允许容器拥有宿主机网络接口的完全访问权限。但是,使用这个选项时要小心。因为它允许容器内的进程像其他根进程一样,使用数值较小的端口;并允许容器内的进程访问本地网络服务,如D-bus。这使得容器内的进程可以做一些预料之外的事情,如重启宿主机。