docker和虚拟机的区别

docker技术在现在互联网行业使用非常广泛,使用方法和优点网上很多资料,这里主要是关于docker和虚拟机的异同点。
相同点:
docker和虚拟机都能把应用程序放在一个独立的环境里面运行。
不同点:
1.虚拟机在物理服务器上,不仅应用程序、文件等是隔离的,还有操作系统也是隔离的。
2.Docker在Docker Engine层上面运行,利用了Host OS里的NameSpace,ControlGroup等来做到将应用程序分离。
Docker Engine容器仅包含应用程序及其依赖项。它在主机操作系统的用户空间中作为独立进程运行,与其他容器共享内核。
所以,docker更加轻量级,因为在创建一个docker容器的时候,不需要加载一个操作系统,而是利用了Host OS里的NameSpace,ControlGroup等来做到将应用程序分离,并且docker是直接使用物理机的cpu,内存的资源,操作系统也是使用宿主机的操作系统,所以效率更高。

对比点docker容器虚拟机
操作系统与宿主机共享os宿主机os上运行虚拟机os
存储大小镜像小,便于存储和传输镜像大
运行性能几乎无额外性能损失操作系统额外的CPU、内存消耗
移植性轻便,灵活笨重,与虚拟化技术耦合度高
面向用户软件开发者硬件运维
部署效率相对快相对慢

docker和虚拟机的区别
如上图所示,镜像构建时,会一层层构建,前一层是后一层的基础。
这里,我们要理解一个概念:容器的镜像是只读的,在当前层删除上一层的文件,实际不是真的删除,而是标记该文件已删除。
启动容器后,一层新的可写层,会被加载到镜像的容器层,我们的操作都是在容器层进行的