作為一個軟件工程師,工程師或工程師,系統集成商,甚至網絡工程師,你肯定聽過這樣一句話,用容器、或者的方式來描述一種新技術已經成為一種流行?!啊环N系統級別的虛擬化技術,允許存在多個隔離的用戶空間實例……”
當然,作為軟件工程師、工程師或工程師、系統集成商或網絡工程師,多個獨立用戶空間實例的存在對你有不同的意義。
但是,從廣義上講,容器提供了一種機制,允許將應用程序(軟件、庫和配置文件等)打包并部署到宿主機的隔離環境(用戶空間)中。
每個容器都獨立運行,但如果容器之間需要進行通信。必須為容器之間構建通信通道,并在操作系統層面上管理這些通道。通道的連通性有兩個要素:網絡拓撲用于識別各個容器和是否有權限建立連接。
隨著更好的安全性、監控、自我修復和可伸縮性機制的加入,容器在微服務領域大放異彩,特別是在開發和部署方面。
但我們是如何走到這一步的呢?這種神秘而又不為人所知的技術是如何突然出現,并在短短幾年內主導云計算、高并發應用和微服務部署的呢?事實證明,所有舊的技術都將變成新的技術。
故事開始于很久以前,確切地說是1979年。在第7版的Unix系統開發過程中。那時候,我還是個愛惹麻煩的六歲小孩。
在Unix的開發過程中,引入了一個稱為系統調用的新特性。 Kirk 博士建議Bill Joy在1982年3月18日(4.2BSD發布前17個月)添加了它。
這個新系統調用的本質是允許將進程及其子進程的根目錄更改為文件系統中的新位置。這是文件系統級別進程隔離的開始,即為每個進程隔離文件訪問。系統調用于1982年正式添加到BSD中。但再次談到就是18年后。
在2000年的最后幾個月,另一特性出現: jails。1999年,經生產環境應用后,Poul- Kamp正式將該功能引入到中,并首次在 4.0中發布,因此許多后代都支持該功能。
主機托管提供商創建 jails的動機是,出于安全和易于管理的需要,對其不同客戶的服務實現明確的分離。 jails允許系統管理員將一個計算機系統劃分為幾個獨立的、較小的系統(稱為jails),并能夠為每個系統分配單獨的IP地址和系統配置。
2001年, Gélinas開始了一個新的項目,其目的是在計算機系統中實現一個監獄機制,為計算機系統提供安全的分區資源,即文件系統、CPU、網絡地址和內存。沒有進程可以對自己分區外的分區發起拒絕服務或其他攻擊。Linux 就是此次項目的結果。
可以通過為Linux內核打補丁的方式實現Linux 操作系統虛擬化機制。最后一個穩定版補丁是在2006年發布。根據維基百科,最近的穩定發布版是2.6.22.19-vs2.2.0.7,發布于2008年3月14日。最新的預覽版本是4.9.195-vs2.3.9.8,發布于2019年10月5日。
在2004年2月的早些時候,Sun 發布了容器(包括 zone),作為x86和SPARC系統的操作系統虛擬化技術實現。容器的第一個公開測試版結合了系統資源控制和區域邊界分離,從而能夠利用快照和ZFS克隆等特性。
每個 zone都有自己的節點名,可以訪問虛擬或物理網絡接口,并為其分配存儲空間。除了部分配置所需的磁盤存儲之外,對給定區域沒有最低的專用硬件要求,它不需要專用的CPU、內存、物理網絡接口或主機總線適配器。盡管可以為特定的區域分配特定資源。
是一種用于Linux的操作系統虛擬化技術,它使用一個經過修補的Linux內核來進行虛擬化、隔離、資源管理和檢查。這些代碼并沒有作為官方Linux內核的一部分發布,但是它的后代在我們的故事中扮演了至關重要的角色。
2014年,時任高級軟件工程師的Kir 在上發表了一篇博文,他說:“事實上,早在1999年我們的工程師開始將容器技術添加到Linux內核2.2中。嗯,當時還不叫容器,而稱之為虛擬環境。這在新技術中經常發生,只是術語有所不同而已。(術語一詞是在2004年由Sun 提出的)。
2000年,他們已經將實驗代碼移植到Linux內核2.4.,并在2002年1月發布了 v2.0。隨著時間的推移,更多的功能被添加進來,比如實時遷移功能。但是直到2005年,他們才意識到使用自由開源軟件模式將極大地提高項目的實用性。因此,作為一個獨立的實體誕生了,作為商業版的補充(后來更名為 Cloud , 縮寫為PCS)。
2006年,谷歌啟動了 項目。該技術主要由Paul 和Rohit Seth領導,旨在限制、計算和隔離進程的資源使用,例如CPU、內存、磁盤I/O和網絡。
2007年, 被重新命名為 或,并最終合并到Linux內核v2.6.24中。
2008年,LXC([LinuX ]( LinuX ))是第一個完整的Linux容器管理器實現。通過使用和Linux命名空間實現。它在一個Linux內核工作,不需要任何額外的補丁。LXC結合了和Linux命名空間,為應用程序提供了一個獨立的運行環境。
LXC通過創建自己的進程和網絡空間提供虛擬環境,而不是創建一個完全的虛擬機。早期版本的使用LXC作為容器執行驅動程序(引擎),盡管LXC在v0.9中是可選的,官方支持最終在 v1.10的發布中被刪除了。、IBM和谷歌負責LXC的內核級工作,由Eric 等人領導。而命名空間團隊則由 , Serge , 等人領導。
2011年,Cloud 啟動了項目。在早期階段使用LXC,但后來用它自己的實現替換了LXC。可以作為守護進程運行,并為容器管理提供高級API,從而在任何操作系統上隔離環境。作為客戶機-服務器模型開發,用于跨多個主機管理容器集合。還包括一個管理、命名空間和進程生命周期的服務。
以Go語言對進行重新編碼的形式發布,并為Diego提供了容器技術。反過來,這也是Cloud 的未來架構。是一個平臺無關的高級API,用Go編寫,用于容器創建和管理,具有可插入的后端,可用于許多不同的平臺和運行時。
2013年,Let Me That For You()作為谷歌的開源項目,提供Linux應用程序容器。應用程序可以被容器感知,創建和管理自己的子容器。
2015年,谷歌開始將的核心概念貢獻給,就停止了對項目的開發維護工作?,F在是Open 的一部分。是一段與Linux內核(如和命名空間)交互的代碼。
是一種Linux容器(LXC)技術,增加了高級API,提供了一種輕量級的虛擬化解決方案,可以獨立運行Unix進程。它于2013年3月發布,提供了可預測、安全、可重復、自動化的部署軟件(工作負載)。
它是一種可重復的、輕量級的虛擬化解決方案,因為“它在進程級別上是隔離的,而且它有自己的文件系統”。高級API允許系統管理員在容器上執行許多操作:如啟動、停止、復制、等待、提交、附加標準流、列出文件系統更改等。
最初是作為一個開源平臺發布的,名稱是。在僅僅幾個月的最初版本,大量的開發人員對產生了極大的興趣和測試教程。2013年9月和Red Hat達成戰略合作伙伴,并在2014年4月15號正式對外公布。
因為和Red Hat的良好關系,甚至得到了谷歌、亞馬遜、微軟等商業公司的更多支持,進一步增強了其在容器化領域的影響力。
使用了標準容器概念,它包含一個軟件組件及其所有依賴項,二進制文件、庫、配置文件、腳本、虛擬環境、jar、gem、tar包等等。并且可以在任何支持的x64位Linux內核上運行。此類容器可以部署在筆記本電腦、分布式基礎設施、云上,保護其環境并使其適用于廣泛的用途,持續部署、Web部署、數據庫集群、SOA等等。
當在2013年出現時,容器的受歡迎程度激增。即使在今天,和容器的使用率一直是齊頭并進的,甚至有時它們就表示同一個意思。2014年6月宣布發布1.0版本時,該軟件的下載量已達到驚人的275萬次。
但這一勢頭并不意味著是所有容器管理平臺的王者。許多用戶很快指出缺乏安全性,因為它使用了一個中央守護進程。等公司以此為線索,提供了自己的具有競爭力的容器管理軟件,以確保用戶獲得更可靠、更安全的平臺。用戶還發現缺少編排工具,這促使了的崛起。
盡管存在缺陷,還是在亞馬遜的幫助下穩步前進,亞馬遜發布了彈性計算云(EC2)容器服務。這使用戶能夠更好地在亞馬遜托管的EC2實例集群中運行容器。
正如之前所做的那樣,在最初的階段也使用了LXC,在以后的版本中用自己的庫替換了原有的容器管理器。但毫無疑問,為容器管理提供了一個完整的生態系統。
隨著以容器為基礎的應用程序的迅速和廣泛應用,系統變得更加復雜,面臨的風險也增加了。這為容器安全奠定了基礎,在2016年,像dirty COW這樣的安全漏洞進一步推動了這種想法。
這導致了一種轉變,在容器應用程序和微服務開發的每個階段中,安全性變得異常重要。
2017年初,有大量的工具涌現,使容器管理變得容易。
就是一個明顯的例子。自2016年云原生計算基金會(CNCF)采用該技術以來,、Azure、AWS和公司就宣布了它們對的支持和兼容性,可以運行在它們自己的基礎設施上并與之集成。
隨著環境和市場的持續成長,一些工具已經開始定義容器生態標準。Ceph和REX-Ray定義了容器存儲標準,成為了容器網絡的默認實現。在CI/CD持續集成/持續交付方面,完全改變了和大規模構建和部署應用程序的方式。
2017年末,容器生態系統變得獨一無二,因為它是由整個社區共同努力以及對開源項目的支持所推動的。公司在2017年將項目捐贈給CNCF就是一個很好的例子。同時,CNCF也接納了的rkt容器運行時。
回到2014年12月,發布了rkt容器,作為的替代品,提供了應用程序容器鏡像的另一種標準格式、容器運行時,以及容器發現和檢索協議。
的rkt容器的出現,使用戶有了更多的選擇,并促成了容器社區的良性循環。
谷歌在2003-2004年左右引進了Borg系統。一開始只是一個小規模的項目,只有3-4個人。
Borg是一個大型內部集群管理系統,用于運行數十萬個作業,來自數千個不同的應用程序,并且跨許多集群,每個集群最多有數萬臺機器。
隨著Borg的引入,谷歌也隨之推出了Omega集群管理系統。Omega是一款靈活、可伸縮的調度器,可用于大型集群。谷歌在2017年推出了作為Borg的開源版本。在短時間內,變得越來越成熟。
2015年7月21日 v1.0發布。在發布的同時,谷歌與Linux基金會合作,成立了云原生計算基金會(CNCF)。CNFC表示,其目標是建立可持續的生態系統,并圍繞一系列高質量的項目建立一個社區,這些項目將成為微服務架構的一部分。
發展迅速,支持越來越復雜的應用程序類別,允許大量企業過渡到混合云和微服務。在2017年哥本哈根的上,公司宣布他們也將支持。
微軟的Azure和亞馬遜的AWS也很快推出了自己的服務,分別為AKS和EKS,旨在與ECS競爭。也是CNCF的第一個項目,并擁有越來越多的第三方系統集成服務提供商。
2018年,容器化最終成為現代軟件基礎設施的基礎。有史以來第一次被大量企業使用。截至2018年初,上的項目擁有超過1500名貢獻者,是最重要的開源社區之一,擁有超過27000顆星星。到2020年7月初,這個數字已經增長到超過62000顆。
令人難以置信的受歡迎程度,讓更多的企業,如AWS、、谷歌、Azure、、和都開始提供基于的管理平臺。
基礎設施提供商ug8.0所需的提供商守護程序停止運行,如也開始采用。2018年底,宣布收購咨詢公司,后者幫助企業部署和管理。容器化領域還出現了新的混合技術,將虛擬機級別的隔離性和容器的快速相結合的技術。
開源項目,如Kata容器、和Nabla嘗試提供更安全的容器運行時,以及輕量級的虛擬機,這些虛擬機的執行方式與容器相同,但提供了更強的工作負載隔離。
2019年,容器生態系統發生了重大變化。新的運行時引擎試圖取代了原來的運行時引擎。最著名的開源容器運行時引擎是CRI-O,一種針對的輕量級運行時引擎。
此外,2019年還發生了一件大事。當年 被收購并拆分,導致 Swarm的壽命被延長2年。與此同時,我們也看到了rkt容器引擎的受歡迎程度持續下降,盡管它仍然是CNCF穩定版的一部分。
與此同時,加注對的投入,先是收購了,然后收購了 (包括PAS和PKS)。這一舉措旨在為企業提供私有云服務。
這一年,無服務器技術平臺也取得了進步,比如[1](基于的無服務器工作負載管理平臺)得到了組織的青睞。
2019年推出的基于的混合云解決方案,如IBM Cloud Paks[2], [3],Aws [4]和[Azure Arc]("" Azure Arc)。這些云平臺模糊了傳統云和on-prem環境之間的界限,使客戶可以管理on-prem和云上的集群。
2020年,企業對容器和相關技術的采用大多圍繞著新的實現。雖然系統集成商確實對現有的工作負載表現出了相當大的興趣,但這很難證明是合理的。
考慮到在遺留應用系統中應用容器或者微服務,需要進行大量的重構,這可能會在短期內阻礙這些技術的持續發展。也就是說,新應用系統會更傾向于使用容器技術,因為容器編排工具(如)正在不斷出現并持續改進。
已經成為每個人都想使用的容器編排工具,但這并不是說,其他的容器編排工具,如 Swarm和的Mesos會消失。
甚至連容器編排工具本身也在不斷進化,從集中的容器編排到與云內或云間其他集群無縫協作的分布式集群。
根據最新的State of (2020)[5] 報告ug8.0所需的提供商守護程序停止運行,的使用率從2018年的27%上升到2019年的48%。57%的受訪者表示運行的集群少于10個,多達60%的受訪者表示有一半的容器化工作負載運行在上。
盡管給企業帶來了明顯的好處,特別是那些需要大規模部署應用程序和微服務的企業,但并不經常部署在云中。相反,報告顯示60%的企業將部署在on-環境中,云部署的比例緊隨其后,大約42%,而其他部署模式則更低。
對容器尤其是持樂觀態度的一個原因是,這些早期采用者獲得了顯著的好處。95%的受訪者表示,采用系統可以帶來明顯的好處,56%的受訪者將資源利用列為系統最大的好處,53%的受訪者表示縮短軟件開發周期是最大的好處。
其他明顯的好處包括獨立的應用程序、支持遷移到云以及降低公共云成本??傮w而言,報告顯示了開發和運維方面的積極成果。這個故事始于41年前,在Unix 7(簡稱V7)的開發過程中,從到容器的道路是漫長而曲折的,它對大規模應用程序和微服務的真正影響現在才開始顯現。
原文:From to to and (翻譯:鐘濤)
你可能還喜歡
點擊下方圖片即可閱讀
基于+的高可用集群
快速部署企業內部知識管理平臺參考資料[1]
:
[2]
IBM Cloud Paks:
[3]
:
[4]
Aws :
[5]
State of 2020: