3分钟读懂什么是容器
说起 “容器” ,大家的靠前反应肯定是日常生活中使用的锅碗瓢盆,或者装运货物的箱子盒子,用来盛放各种各样的物品。那么拿港口码头来说,每天都要通过船舶向外运送大量的货物。装货的时候肯定不会直接扔进船舱,所以每个码头都会用大量的集装箱来运载货物。有了这些集装箱,货物不用杂乱无章地堆放在一起,又可以按照分类一层一层地摆放,更易于管理,同时也方便运输。
那么我们今天说的 “容器” 究竟是什么呢?它的灵感其实就来源于那些 “集装箱” 。在说 “容器” 之前,先来简单讲一下我们很耳熟的 —— “虚拟机(VM)”,并对比一下两者的区别。
虚拟机(VM)大家肯定不会陌生了。顾名思义虚拟机就是用来模拟计算机系统的软件,让使用者可以在一台计算机上运行看似多台计算机的设备。在一些需要不同类型的硬件或操作系统上运行软件时虚拟机是一个好帮手,这样就无需使用其他的硬件了。自从虚拟化技术和云计算服务出现以来,大大小小的 IT 公司都将虚拟机作为降低成本和提高效率的一种方式。但是,虚拟机会占用大量系统资源。每个虚拟机不仅要运行一个完整的操作系统,还需要运行操作系统要运行的所有虚拟硬件。这样就会消耗大量的内存和 CPU 资源。与运行单独的物理计算机相比,这样是比较经济的;但对于某些应用程序而言却是很浪费的。
这种情况下,就促进了容器的发展。容器(Container)是一种更轻量级,更灵活的虚拟化处理方式,它将一个应用程序所需的一切打包在一起。容器包括所有代码,各种依赖甚至操作系统,这让应用程序几乎在任何地方都可以运行。因此它的诞生,解决了一个重要问题:如何确保应用程序从一个环境移动到另一个环境的正确运行。它只是虚拟了操作系统,而不像虚拟机一样去虚拟底层计算机。
△ 虚拟机(VM)与容器(Container)那么对比虚拟机,容器有哪些特点呢?
- 可移植性:目前容器技术的现代形式主要体现在应用程序容器化(如 docker)和系统容器化(如 LXC)中。这两种形式的容器都能让 IT 团队从底层架构中抽象出程序代码,从而实现跨各种部署环境的可移植性。
- 轻量级:容器通常位于物理服务器及其主机操作系统之上。它可以通过单个操作系统安装来运行多个工作环境。因此容器特别 “轻” —— 它们只有几兆字节,只需几秒钟即可启动。
- 降低成本:与虚拟机相比,内存,CPU 和存储效率的提高是容器技术的关键优势。由于可以在同一基础架构上支持更多容器,那么这些资源的减少就可以转化为巨大的成本节省,同时还可以减少管理开销。
△ 虚拟机和容器的特点对比
那么容器技术主要应用在哪些场景呢?目前主流的有以下几种:
1. 提高现有应用的安全性和可移植性并节约成本。每个企业的环境中都有一套较旧的应用来服务于客户或自动执行业务流程。即使是大规模的单体应用,通过容器隔离的增强安全性、可移植性特点以降低成本。
2. 加速应用架构现代化进程。容器允许开发人员选择最适合于每种服务的工具或技术栈,隔离服务以消除任何潜在的冲突,并可以独立于应用的其他服务组件,轻松地共享、部署、更新和瞬间扩展。
3.优化IT基础设施。容器有助于优化 IT 基础设施的利用率和成本,作为一种轻量级打包和隔离应用工作负载的方法,允许在同一物理或虚拟服务器上毫不冲突地运行多项工作负载,同时减少操作系统和服务器的维护工作。