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、内存消耗 |
移植性 | 轻便,灵活 | 笨重,与虚拟化技术耦合度高 |
面向用户 | 软件开发者 | 硬件运维 |
部署效率 | 相对快 | 相对慢 |
如上图所示,镜像构建时,会一层层构建,前一层是后一层的基础。
这里,我们要理解一个概念:容器的镜像是只读的,在当前层删除上一层的文件,实际不是真的删除,而是标记该文件已删除。
启动容器后,一层新的可写层,会被加载到镜像的容器层,我们的操作都是在容器层进行的