Docker容器出现的意义是什么
为什么需要软件隔离
更复杂的需求,需要程序运行在多个跨主机的环境中,实现分布式部署,如大数据平台、分布式文件系统等。
已有的软件隔离方案:
虚拟机:IaaS的发展主要以虚拟机为资源调度的最小单位,资源利用率底、调度分发缓慢;
进程:一个程序的运行,首先会被编译成系统可执行文件,然后封装成进程,在系统中运行;
存在的问题:
(1)虚拟机需要重新加载一个新的操作系统,虚拟机运行的指令需要被转换为物理机操作系统可以识别的指令,从而效率底下;
(2)对于进程而言,在另一个环境中运行的时候,需要相同的操作环境,比如有的需要JAVA_HOME环境变量去调用java脚本,因此,可移植性并不好。
解决方案:
容器。容器没有管理程序的额外开销,与底层共享操作系统,因此,性能优良,系统负载低;容器类似集装箱,能够将程序需要的依赖环境也进行封装,实现一次构建,到处运行。
因此,容器在当前云计算环境下,是优于进程和虚拟机的,这也是它在这个大环境下诞生的意义。