Docker基本概念
由于不同机器不同的操作系统上,不同的库和不同的组件,如果要将一个应用部署到多台机器上就需要有大量的环境配置的操作。而且配环境是非常麻烦的事情,不同的系统下库版本可能不同或者有的机器是物理断网的很多环境配置上就很麻烦。
Docker主要解决了环境配置的问题,它是一种虚拟化技术,对进程进行隔离,被隔离的进程独立于宿主的操作系统和其他隔离进程。
Docker和虚拟机的比较
虚拟机也是一种虚拟化的技术,和docker最大的区别时,它通过模拟硬件,并在硬件上安装操作系统来实现。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GjvhR2fT-1585938868332)(en-resource://database/902:0)]
从结构上看,左边需要GuestOS层,左边的Hypervisor层被右边的Docker Engine层代替了。
我们需要知道的是GuestOS层是虚拟机安装的操作系统,是一个完整的内核,Hypervisor是硬件虚拟化平台。
虚拟机实现资源隔离的方式是利用独立的GuestOS,以及利用Hypervisor虚拟化CPU、内存、IO设备等来实现的,因此Docker明显来的更加轻量。
Docker利用的是当前的namespace来实现不同容器之间的隔离,利用了cgroup实现了对资源的隔离,利用了镜像实例实现了和环境的隔离。
从消耗的资源上来分析,docker除了运行的进程需要消耗资源外,系统的开销非常小。而传统的虚拟机就消耗就非常大,需要有多个操作系统。
传统虚拟机的实现是在硬件层面上进行虚拟化ÿ