Container VS VM
【VM】在使用容器之前,大多数基础架构不是在裸机上运行,而是在管理多个虚拟化操作系统(OS)的虚拟机管理程序上运行。这种安排允许应用程序在比OS提供的更高级别上彼此隔离。这些虚拟化操作系统可识别出自己独有的硬件。但是,这也意味着每个虚拟操作系统都在复制整个操作系统,这需要更多的磁盘空间。
【Container】
容器提供类似于虚拟机(VM)的隔离,除了由操作系统和进程级别提供。 每个容器都是一个独立运行的进程或进程组。 典型容器显式只运行一个进程,因为它们不需要标准系统服务。他们通常需要做的事情可以通过对基本OS内核的系统调用来提供。
Linux上的隔离是由名为namespaces的功能提供的。 每种不同类型的隔离,即用户和用户组,由不同的名称空间提供。这是一些常用且对用户可见的命名空间的列表:
· PID:进程ID
· USER:用户和组ID
· UTS:主机名和域名
· NS:挂载点
· NET:网络设备,堆栈和端口
· CGROUPS:控制限制和资源监控
传统应用程序在本机硬件上运行。 单个应用程序通常不使用单个计算机的完整资源。大多数组织尝试在一台计算机上运行多个应用程序,以避免浪费资源。 可以运行同一应用程序的多个副本,但为了提供隔离,可以使用VM在同一硬件上运行多个应用程序实例(VM)。 这些虚拟机具有完整的操作系统堆栈,由于在运行时和磁盘上都存在重复,因此它们相对较大且效率较低。、
· 容器