虚拟化问题
服务器和桌面虚拟化目前已经成为大多数数据中心的标准应用部署。那么这些数据中心为什么还关注Docker和其他容器技术呢?容器能够帮助克服虚拟化的2大根本问题。
大多数情况下,虚拟机是过耗的。数据中心需要的是同时同物理主机能够安全运行多应用的能力。将应用归类,这样其中错误的代码就不会导致其他应用的崩溃,这一点是基本的需求。除此之外,还要谨慎的分配主机服务器资源给这些实体。虚拟化之前,IT能够实施物理机的应用控制。虚拟化实质上再现了整个物理服务器作为一个虚拟机运行一个应用。虚拟化有监控程序驱动。它的作用是抽象服务器资源,让监控程序分配资源给VM。监控程序执行抽象的开销将造成性能损耗。
通常的解决方案是投入更多的硬件,一般是以CPU的形式而非裸机服务器。
容器的优势
容器要比VM更高效。并非虚拟化或抽象整个硬件,它们只是抽象应用或应用的部分。如此粒度的虚拟化意味着资源将不会浪费在冗余的部分。它同时是低CPU、内存和存储需求的。
Docker利用写入时复制文件系统创建容器。通常看来,一个主映像将被创建,然后从主影像上创建容器。大多数虚拟机监控程序都有类似的功能,但映像必须是一个完整的虚拟机。容器技术带来更加精确的映像。创建的容器可以使应用的一个分支或应用的子集。
Docker存储注意事项
Docker存储的一些注意都和虚拟化的相类似,然而也存在一些不同。Docker专为直连存储应用而设计,但随着环境的成熟,也会出现主机间共享信息和迁移容器的多样需求。共享存储将支持高可用、共享访问和容器迁移。但共享存储势必要适应比一般虚拟服务器环境更多样的负载,从I/O角度来看,Docker存储环境和虚拟桌面基础设施相类似。
Docker环境支持从几十个容器扩展到几百个、甚至上千,在几秒钟之内,当然它也能迅速的缩小至几十个。适应这样的伸缩变化需要支持闪存和磁盘的混合系统。这个系统还可能要为适应容器增长而做扩展设计。
今天,不像VMware和Hyper-V,Docker在存储上几乎毫无特色。缺少特点说明存储硬件上的软件还要强大,让企业能够具备他们过去所具备的功能。Docker环境通过RESTful API实施自动化,以编程方式创建、执行以及移除。这很有意义,存储系统本身通过RESTful API完全脚本化。
Docker和容器技术本身还在起步阶段,在接下来的时间里还会有重大的变化。保守来看,Docker将在存储管理、增减新协议支持以及提供存储服务方面更有发展。支持的存储系统需要足够灵活以适应支持多协议带来的变化。
今天,Docker已经支持应用部署和测试。对着数据中心数量的上升,越来越多的企业数据中心将会进行比以往更多的开发工作。Docker对于这些环境来讲是理想的。但就像虚拟化开始应用于实验环境后来进入商业领域,Docker和容器作为测试开发工具起步也将在未来的企业应用中找到位置。