1.爲何會出現容器技術?java
容器是針對如下問題的解決方案:在切換運行環境後,如何保證軟件可以可靠地運行?這種切換多是從程序員的筆記本電腦到測試環境、從某個測試階段部署到線上,也多是從數據中心的某臺物理機到私有云或者公有云上的某臺虛擬機。程序員
2.容器是什麼?web
容器就是組件和底層服務細節之間的接口。在web組件、企業級Bean等可以執行以前,它必須被裝配爲一個JavaEE模塊,並部署在容器上。根據組件構成,將JavaEE項目開發中的容器分爲如下幾類,(由上到下):Applet容器、(ApplicationClient)應用客戶端容器、Web容器、EJB容器。javaee核心概念就是組件+容器,隨着愈來愈多的J2ee框架出現,相應的每種框架都通常有與之對應的容器。服務器
3.容器技術的將來發展趨勢?框架
截至今天,業界有一個重要的趨勢,即從VM遷移到容器以部署軟件應用程序。其主要緣由是與VM相比,容器提供的靈活性和低成本。谷歌多年來一直使用容器技術與Borg和Omega容器集羣管理平臺大規模運行Google應用程序。更重要的是,Google經過實施cgroup和參與libcontainer項目爲容器空間作出了貢獻。在過去幾年中,Google可能已經在使用容器的性能,資源利用率和總體效率方面得到了巨大的收益。最近,微軟沒有在Windows平臺上進行操做系統級虛擬化,當即採起措施在Windows Server上實現對容器的本機支持。微服務
在生產環境中,Docker、Rocket和其餘容器平臺不能在單個主機上運行,緣由是它們暴露於單個故障點。當一個容器集合在單個主機上運行時,若是主機失敗,在該主機上運行的全部容器也將失敗。爲了不這種狀況,須要使用容器主機集羣。解決這個問題的第一個最開放源碼的容器集羣管理平臺之一是Apache Mesos。它最初是做爲一個研究項目在加州大學伯克利分校開發的,後來在2012年左右轉移到了阿帕奇(Apache)。Google採起了相似的步驟來實現一個先進的、開放源碼的容器集羣管理系統,名爲Kubernetes。Docker還啓動了一個名爲Docker Swarm的解決方案。今天,這些解決方案還處於很是早期的階段,可能須要幾個月才能完成所有功能集,並在生產環境中普遍應用。post
微型服務是另外一項突破性的技術,而不是一種使用容器進行部署的軟件體系結構。微服務是一個Web服務的輕量級實現,與標準Web服務相比,它的啓動速度很是快。這是經過在一個服務中打包一個功能單元並將其嵌入到一個輕量級的Web服務器二進制文件中來實現的。性能
經過考慮上述事實,咱們能夠預測,在將來幾年內,容器可能會佔用虛擬機,有時可能會徹底取代它們。去年,我與一些企業合做,在POC層面實施基於容器的解決方案。不多有人想接受挑戰並將其投入生產。隨着容器集羣管理系統變得更加成熟,這可能會很快發生變化。測試