为什么会出现?
在企业级应用开发过程中,传统的开发上线流程是程序员将代码打成war/jar包,交由运维工程师进行部署上线。但这样存在一个问题,就是运维程序员本地的环境可能与开发工程师本地环境不一致,导致在开发工程师本地可以正常运行的程序在运维工程师本地不可以正常运行。
因此,可以考虑是否可以把程序连同环境一起“打包”,这样一个“包”就可以在任意机器上运行,而不需要运维工程师进行环境配置,即“软件带环境安装”。于Docker虚拟化技术应运而生。
定义
一句话,Docker是解决了运行环境和配置问题的软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术
Docker与虚拟机的区别
虚拟机
在一种操作系统里运行另一种操作系统。应用程序对此毫无感知,因为虚拟机看上去跟真实系统一模一样,而对于宿主系统来说,虚拟机就是一个普通文件,对宿主机其他部分毫无影响。虚拟机完美运行了另一套系统,其不仅模拟环境,而是模拟应用程序,操作系统甚至是硬件。
缺点:资源占用多、冗余步骤多、启动慢
Docker
Linux虚拟化技术:LXC(Linux容器)
不是模拟一整个操作系统,也不模拟硬件,只是对进程进行隔离。可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同,不需要捆绑一整个OS,只需要软件工作所需的库资源和设置。因此更轻量。