容器概念与特点
容器(Container):一种轻量级的虚拟化技术,这种技术允许操作系统上的用户空间被分割成几个独立的单元在内核中运行,彼此互不干扰。这样一个独立的空间,就称之为一个“容器”。
如果把容器比作集装箱的话,应用就相当于集装箱里的货物。
容器类似“集装箱”,应用好比“货物”
容器为应用软件及其依赖组件提供了一个资源独立的运行环境。应用软件所依赖的组件会被打包成一个可重用的镜像,镜像运行环境并不会与主机操作系统共享内存、CPU和硬盘空间,由此也保证了容器内部的进程与容器外部进程的独立关系。
举个例子,一个操作系统,可以类比成一套公寓,那么容器就相当于公寓中的一个房间,大家共享同一个客厅,厨房和卫生间。但是房间和房间之间彼此隔离,一个房间里面的人的活动,不会影响到其他房间的住客。房间也有门,因此有一定的安全隔离保障。
容器的技术特点:
- 容器是自包含的。它打包了应用程序及其所有依赖,可以直接运行。
- 容器是可移植的。可以在几乎任何地方以相同的方式运行。这就可以确保应用在开发环境、测试环境、生产环境等都有完全一样的运行环境。
- 容器是轻量级的。占用资源很少,可以秒级启动。
- 容器是互相隔离的。同一主机上运行的多个容器,不会互相影响。
容器技术和虚拟化的比较
在虚拟化架构中,底层是硬件,往上是虚拟化层hypervisor,之上安装虚拟机操作系统,接着配置应用运行所需的依赖环境,然后安装APP。而在容器架构中,底层也是硬件,往上是操作系统而不是虚拟化层hypervisor,再安装容器引擎,就可以在容器中配置应用运行依赖并安装APP。
这两种架构,一个很直观的对比结果是,容器的运行不需要再额外安装虚拟机操作系统。可见,容器是一种比虚拟机更轻量级的虚拟化技术,支持秒级启动具备更好的快速扩展能力,具备更好的跨平台迁移能力。当然也由于这个原因,容器的隔离性上不如虚拟机。两者主要差异如下:
- 虚拟机OS占用了较多资源,一个虚拟机基本是GB 级的,一个容器可小至几MB。
- 虚拟机的启动时间一般是分钟级的,而容器的启动时长是毫秒级的。
- 由于容器的轻量级,它具备了更好的快速扩展能力。
- 容器比虚拟机具备更好的跨平台迁移能力,如虚拟机无法从Vmware迁移至KVM。