在容器化技术出来之前,网络基础环境常见使用的是虚拟机技术,虚拟机技术和Docker容器技术都是一种服务器虚拟化技术。
虚拟机技术
虚拟机包含的是整个操作系统的原生镜像,非常的庞大,而docker的镜像只包含最核心的环境,非常小巧。
那我们可以明显观察到虚拟机的相关缺点:资源占用十分多;冗余步骤多;启动慢。
容器化技术
容器化技术并没有模拟一个完整的操作系统。
比较Docker与虚拟机技术的不同:
传统虚拟机,虚拟出一套硬件,运行一个完整的操作系统,然后在这个操作系统上安装和运行软件。
Docker 容器内的应用进程直接运行在宿主机的内核(内核级虚拟化),容器内没有自己的内核且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。
每个容器是互相隔离的,每个容器有属于自己的文件系统,容器之间进行不会相互影响,能区分计算资源。
容器的优点
应用更快速的交付和部署,打包镜像发布测试,一键运行;更快捷的升级和扩缩容;更简单的系统运维,开发、测试环境高度一致;更高效的计算资源利用。
Docker比虚拟机快的原因
Docker有着比虚拟机更少的抽象层,Docker不需要实现硬件资源虚拟化,而是直接使用实际物理机的硬件资源,因此在Cpu、内存利用率上Docker将会在效率上有明显优势。
Docker利用的是宿主机的内核,当新建一个容器时,不需要和虚拟机一样重新加载一个操作系统,避免了引导、加载操作系统内核这个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载Guest OS,这个新建过程是分钟级别的,而Docker由于直接利用宿主机的操作系统则省略了这个过程,因此新建一个Docker容器只需要几秒钟。