全方位驗證容器就是Linux
容器是近兩年最熱門的話題。但容器到底是什麼,這個詞與Docker到底有著什麼聯繫?本文提供了一個新的視角:容器就是Linux,並從七個方面,包括定義、應用場景、安全與性能等技術角度進行了詳盡闡釋。
至頂網軟體頻道消息: 容器就是Linux。這套過去二十年來對數據中心產生革命性影響的操作系統現在正在徹底改變我們在雲中包裝、部署和管理應用的方式。隨著越來越多的組織機構認識到容器能夠為他們管理應用和基礎設施的方式帶來許多優勢,人們對容器技術的興趣在不斷增長。
說到底,容器是Linux的一個特性。十多年來,容器已經成為Linux操作系統的一部分,而這一切甚至可以追溯到UNIX時代。這就是為什麼最近推出了Windows容器,但我們看到的大多數仍然是Linux容器。這也意味著如果你正在部署容器,你的Linux選擇將至關重要。
在說容器就是Linux時,這到底這意味著什麼,以及對您的重要性體現在哪裡。
容器就是Linux
Linux容器只不過是在Linux上運行的進程。它與其他容器化的進程共享同一個主機內核。那麼到底是什麼東西讓這一進程成為一個「容器」呢?
首先,通過使用內核命名空間,每個容器化的進程與運行在同一個Linux主機上的其他進程相隔離。內核命名空間提供一個虛擬化的世界,供容器進程在其中運行。例如,「PID」命名空間使得某個容器化的進程只能看到該容器內的其他進程,而不能看到該共享主機上的其他容器的進程。其他安全隔離功能還由諸如刪除功能(dropped capability)、只讀安裝(read-only mount)和seccomp等內核功能來提供。SELinux在紅帽企業版Linux等發行版中提供了額外的文件系統安全隔離。這種隔離有助於確保一個容器不能濫用其他容器或者攻破底層主機。
第二,通過使用Linux控制組(或「cgroup」),每個容器進程(內存、cpu、I/O等)所消耗的資源僅限於指定的範圍內。這有助於消除嘈雜鄰居的問題,防止某個容器過度使用Linux主機資源,而使其他容器得不到資源保證。
這種能力既隔離了容器化的進程,又限制了它們所消耗的資源,從而能夠讓多個應用容器更安全地運行在同一個共享的Linux主機上。隔離與資源限制相組合,使得一個Linux進程成為一個Linux容器。換句話說,容器就是Linux。下面我們來進一步探討一下這句話的含義。
容器安全性就是Linux安全性
一旦了解了容器的工作原理,就容易理解「容器安全性就是Linux安全性」這句話。多個容器在同一個共享主機上安全運行的能力,其重要性不亞於內核在容器與底層主機操作系統之間提供多租戶隔離的能力。這包括Linux內核命名空間以及其他安全功能,例如SELinux,其由內核及您所選擇的Linux主機發行版來提供;同時也包括Linux發行版本身的安全性和可靠性。最終,這意味著,您的容器與其運行時所依賴的Linux主機同樣安全。
另一個重要因素是確保容器中運行的內容是可信的。Docker開源項目為不可變容器鏡像引入了一種分層封裝格式,但用戶仍然需要確保他們所運行的鏡像是安全的。每個容器鏡像由一個基本的Linux用戶空間層以及依賴於應用的其他層組成。例如,對於紅帽企業版Linux 7和紅帽企業版Linux 6,紅帽提供了基本鏡像,同時還通過認證容器註冊表,為各種語言runtimes、中間件、資料庫等提供了大量的認證鏡像。紅帽聘請了大批工程師從已知的源代碼中封裝鏡像內容,並努力確保這些內容不存在漏洞。紅帽還提供安全監控功能,以便在檢測到新問題時,能夠獲得修復程序並發布更新的容器鏡像,進而使企業用戶能夠更新他們運行在這些容器上的應用。
容器性能就是Linux性能
我們還能很容易看到容器性能如何與Linux性能相關聯。一個容器鏡像就是一個用於對容器實例進行實例化的分層Linux文件系統。對所使用的Linux文件系統的選擇 – OverlayFS、Device Mapper、BTRFS、AUFS等,可能會影響到有效地構建、存儲和運行這些鏡像的能力。性能以及這方面的相關問題通常會涉及到Linux主機文件系統的故障排除。
紅帽公司已經在與雲原生計算基金會(CNCF)合作,在OpenShift上大規模地測試Kubernetes上的容器部署。在我們最近的性能基準測試中,在一個由100台物理伺服器組成的裸機集群上以及一個由2048台虛擬機組成的虛擬機集群上測試了容器。當您閱讀這些測試結果時,您很快就能夠發現容器性能與Linux性能之間有多麼密切的關係。在紅帽公司,依靠我們的Linux性能和規模工程團隊的技能和經驗,並與客戶和社區開展合作,以確定大規模運行容器的最佳配置。
容器的可靠性就是Linux的可靠性
最終,如果企業為其生產應用採用了容器,他們當然需要知道他們的容器是否可靠地運行。無論是關於安全性、性能、可擴展性或是一般質量方面的問題,容器的可靠性總是與其運行的Linux發行版的可靠性,以及其背後的供應商有莫大的關係。容器代表了一種在Linux上封裝及運行應用的新方法。紅帽公司在支持商業機構和公共部門把Linux用於關鍵任務應用方面具有悠久歷史。可靠性是紅帽企業版Linux的標誌,也是它能夠成為企業中Linux事實上的標準的原因。這種可靠性也是紅帽企業版Linux正在成為在企業環境中運行Linux容器標準的原因。
Docker到底是什麼?
如果容器就是Linux,那麼Docker又是什麼呢?這取決於你所指的是什麼。大多數人所知道的docker是2013年3月推出的開源軟體項目,它可以在Linux上自動部署應用容器。Docker項目是過去幾年最受歡迎的開源項目之一,docker/docker Github 知識庫擁有超過1600名貢獻者以及41,000顆星標。
Docker容器引擎管理著Linux內核命名空間、其他安全功能以及cgroup的配置,並為在容器內運行的內容引入了分層封裝格式。這使得開發人員可以輕鬆地在本地計算機上運行容器,並創建出不可改變的鏡像,以便在其他機器上以及在不同環境中一致地運行。這些容器的運行時不是docker,而是Linux。
隨後推出了開放式容器計劃(OCI),用於為容器格式(鏡像規範)和運行時(運行時規範)創設開放的行業標準規範。在過去幾年中,docker項目維護人員已經開始將較低層次的容器運行時管道作為獨立的項目,其中包括OCI runC以及最近的containerd,後者被分拆出來並捐贈給CNCF。
Docker Inc.也是一家發起docker項目的私人公司,並出售同名的商業產品。Docker EE把docker容器引擎(包括runc和containerd)與額外的編排、管理和安全功能結合到一起。Docker Inc.的產品正在與越來越多的供應商相競爭,他們試圖為構建、部署和管理容器提供「最佳組合」的解決方案。這些供應商既包括紅帽這樣的公司(提供的解決方案有OpenShift、紅帽企業版Linux以及紅帽企業Linux 原子主機等);也包括提供容器管理平台(CoreOS、Rancher、VMware等)的其他獨立軟體供應商;還包括主要的雲供應商,例如Amazon、Microsoft Azure和Google,他們在公共雲中提供託管容器服務。
容器供應商就是Linux供應商嗎?
如果他們的核心容器用的是Linux,那是否就可以說這樣的容器供應商就是Linux供應商呢?不一定。
Linux操作系統是運行容器化應用的基礎系統,這涵蓋內核、文件系統、網路,等等。容器提供了更快、更高效、更易於移植的抽象,可以跨越不同基礎架構(包括物理伺服器、虛擬化平台、私有雲和公有雲)在Linux上運行應用。
隨著更多的容器部署投入生產,許多企業都在向紅帽公司諮詢如何從「自製」的容器解決方案轉向受支持的容器平台。安全問題經常被認為是在生產中採用容器所面臨的主要障礙之一。任何新技術都會遇到這個問題。您今天聽到的有關容器的問題就是您在2000年代初期所聽到的有關虛擬化的問題。當時,在談到虛擬化的時候,許多IT管理人員就會說,「對開發有好處,但是我永遠不會在生產中運行它!」但今天,許多企業都在生產中運行虛擬化,而且不僅僅是針對簡單的應用程序,而是針對其最複雜、最關鍵任務的系統。這種認識上的演變也開始發生在容器上。
隨著越來越多的企業為其任務關鍵型應用部署容器,他們需要向其容器平台供應商提出與Linux供應商相同的問題。在這兩種情況下,相同的考慮因素和標準都適用:
這個供應商的平台是否可靠?
它有多安全?
它能夠擴展嗎?
最終,我可以信任它將其用於我最重要的應用嗎?
您的容器平台供應商和您的Linux供應商其實是一樣的。
為什麼要選擇紅帽的容器?
紅帽公司對容器的貢獻可追溯到2000年代初期,當時創建了Linux命名空間和cGroup之類的核心容器原型。容器是紅帽企業版Linux的多個主要版本中的一項核心功能,而且自紅帽OpenShift於2011年首次發布以來一直是其基礎。自2013年以來,紅帽公司一直在為Docker開源項目做出貢獻,目前已成為總體上的第二大貢獻者。2013年9月,紅帽公司作為首批主要公司之一,宣布將就docker項目開展合作,而且一直在與Docker Inc.以及眾多其他供應商和個人貢獻者合作,幫助該項目取得了今天的成就。
作為紅帽企業版Linux 7和紅帽企業版Linux原子主機的一部分,紅帽公司封裝並交付了docker 容器引擎項目的一個得到完全支持的二進位版本。這是OpenShift的基礎。OpenShift提供了一個強大的生產級容器平台,其中還包括具有Kubernetes的容器編排以及其他應用生命周期管理功能、得到完全支持的運行時、中間件和資料庫服務,還有集成的操作管理解決方案和開發人員工具。
紅帽公司為容器生態系統的領先項目提供支持,並提供了一套綜合性的容器平台產品。我們使客戶能夠利用其在Linux中的現有投資,並進一步發展它們以充分利用Linux容器的優勢。我們利用Kubernetes的力量,讓客戶不僅能夠在單個的伺服器上運行單個的容器,而且能夠跨越伺服器集群運行複雜的多容器應用,還能夠在他們數據中心或公共雲中運行容器。我們通過添加多種功能,讓他們的構建工作、持續的整合和持續的部署過程都能夠自動進行並實現集成,讓客戶的應用以及客戶的應用開發過程連接到一起。最後,我們提供多種運營管理功能來管理他們在公共雲、私有雲、虛擬化平台或物理基礎架構上的容器平台。
在紅帽,我們早就看到了容器的潛力以及對人們如何建造和運行容器進行標準化所具有的重要性。這就是為什麼我們一直致力於成為上游容器社區和治理機構的領導者。最重要的是,紅帽在過去15年作為Linux的領導者,贏得了極大的聲譽,在客戶中建立了良好的口碑。隨著越來越多的客戶從在Linux上運行應用轉移到在Linux容器中運行應用,這些企業以及更多的企業將再次相信紅帽將引領未來。
(本文來自紅帽OpenShift、Atomic和Linux容器產品管理高級總監Joe Fernandes。)


※Red Hat在最新雲套件中集成Kubernetes
※Linux on Azure:市面上都有哪些選擇?
※微軟想讓人工智慧進入Raspberry Pi和其他小型設備
※DRAM需求高漲助力Micron收入創下新高
※Nutanix牽手Google共同打造數據中心控制平面
TAG:ZD至頂網 |
※容器 Flannel vxlan 基本原理和驗證
※如何在 Linux 中驗證 ISO 鏡像
※Facebook或將收購身份證驗證軟體公司Confirm
※TensorFlow驗證碼識別
※Microsoft Edge瀏覽器宣布支持Web身份驗證
※使用 Testinfra 和 Ansible 驗證伺服器狀態
※evident proof——數據驗證和證明服務
※外媒驗證:拍照方面,iPhone XS仍可圈可點!
※Springboot集成Kaptcha實現前後端分離的驗證碼功能
※Python驗證碼識別:利用pytesser識別簡單圖形驗證碼
※Windows下驗證https證書
※使用Python和Tesseract來識別圖形驗證碼
※Oxcert Protocol——驗證區塊鏈上的資產
※驚現!微軟Surface Phone設備驗證曝光
※前後端分離「vue + .netcore 補程」之基於Vuex的許可權驗證探究
※Trust but Verify:喜力這家啤酒公司要做In-house的廣告驗證
※NET Core微服務之基於Ocelot+IdentityServer實現統一驗證與授權
※Golang語言TLS雙向身份驗證拒絕服務漏洞分析
※validate表單驗證及自定義方法
※Android手機將可在iOS上使用雙因素身份驗證安全密鑰