docker容器与虚拟机有什么区别?

各种虚拟机技术开启了云计算时代;而Docker,作为下一代虚拟化技术,正在改变我们开发、测试、部署应用的方式。物理机和虚拟机、docker有何不同呢?

1、物理机好比是独栋别墅,独立地基,独立院落。

2、虚拟机相当于小区居民楼的每套房,共享地基,共享的院落。但是有独立卫生间、客厅、卧室、厨房、宽带。

3、容器相当于胶囊公寓。一套房隔成多个小隔间,共享地基,共享卫生间、厨房和宽带。

虚拟机是依赖hypervisor这个类似于虚拟化环境的控制管理模块从主机系统中获取资源然后分配给每个虚拟机实例。每个虚拟机实例是有独立的操作系统和运行环境。

而容器类似于已经有了操作系统和基础环境的虚拟机,方便部署、移植,而且主机资源利用率会比虚拟机要高。

Docker守护进程可以直接与主操作系统进行通信,为各个Docker容器分配资源;它还可以将容器与主操作系统隔离,并将各个容器互相隔离。虚拟机启动需要数分钟,而Docker容器可以在数毫秒内启动。由于没有臃肿的从操作系统,Docker可以节省大量的磁盘空间以及其他系统资源。

以下关于虚拟机的虚拟设备的说法正确的是:()

A、虚拟机使用“Virtio硬盘“或”Virtio网卡”时不需要安装Virtio设备驱动

B、”Virtio网卡”与”普通网卡”相比,有更优的性能,推荐使用”Virtio网卡”

C、虚拟机的虚拟CPU通过时间片轮询的方式使用物理CPU资源

D、虚拟CPU的”custom”工作模式可以为虚拟机提供最优的迁移兼容性和最优的性能

这篇博文是博主在公司内推进docker+k8s落地时的部分内容。目的是为了让公司内的开发不管有没有接触过docker这个技术,都能准确的了解docker是什么,怎么打出符合自己项目需要docker镜像,最终交付给容器环境运行。

今天分享的内容主要以实际改造为主,剖开docker的神秘面纱,力求让大家都知道docker是什么,怎么打dcoker镜像,docker这块是开发必须要了解的,以后我们的交付物不是jar,也不是war,而是可以运行在各种容器化平台(k8s,swarm,mesos,OpenShift等)的docker镜像。

k8s这块已经偏运维了,运维需要掌握k8s中的诸多概念,以后运维就不是运维ECS主机了,直接运维k8s。然后分别以spring boot和tomcat两个类型的不同应用为例。讲下具体的改造方案,以及我们在这个期间解决的一些问题和改造需要注意的细节

虚拟机属于完全虚拟化,即模拟完整的底层硬件环境特权指令的执行,客户操作系统无需进行修改。比如我们常用的VirtualBox,VMWare Workstation和Parallels Desktop等虚拟化软件。

Docker和其它容器技术便是操作系统级虚拟化,即直接通过内核创建虚拟的操作系统实例(内核和库),来隔离不同的进程和资源。

大白话:什么是镜像(image)?

在docker没有出现流行前,一般提到镜像,都是Windows等系统镜像,其实docker镜像和Windows等系统镜像在概念上是一样的,都是将一个完整的可运行的系统打包下,方便下次运行时包含所有环境,不需要安装各种依赖了。

java的docker镜像中一般都有一个最基础的镜像+jre环境,最基础的系统运行环境,大概4M左右。然后我们需要将我们的spring boot应用copy进去,重新打包镜像。那么新的镜像就是包含了我们的应用的所有的依赖了。

这个过程相当于,将我们uat环境的ECS主机copy一份镜像一样,但是这个体积有很大的区别。最终我们打完的docker镜像大小=基础系统(4M左右)+java(80M左右)+应用(100M左右)

以上就是docker镜像与传统vm区别及分析的详细内容,更多关于docker镜像与vm区别的资料请关注脚本之家其它相关文章!

我要回帖

更多关于 docker安装在虚拟机上 的文章

 

随机推荐