真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

容器快速入門完全指南

介 紹

創(chuàng)新互聯(lián)公司專注于珙縣網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供珙縣營銷型網(wǎng)站建設(shè),珙縣網(wǎng)站制作、珙縣網(wǎng)頁設(shè)計、珙縣網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造珙縣網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供珙縣網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

容器,以及Docker和Kubernetes之類的容器技術(shù)已經(jīng)日益成為許多開發(fā)人員工具包中常見的工具。容器化的核心目標是提供一種更好的方式,以可預(yù)測和便于管理的方式在不同的環(huán)境中創(chuàng)建、打包以及部署軟件。

在本文中,我們將一窺什么是容器,它與其他虛擬化技術(shù)有何不同以及它在部署和運維的過程中有哪些優(yōu)勢。如果您只是想迅速了解有關(guān)容器的核心概念,您可以直接滑到倒數(shù)第二部分【容器專用術(shù)語】查看。

什么是容器?

容器是一種操作系統(tǒng)虛擬化技術(shù),用于打包應(yīng)用程序及其依賴項,并在隔離環(huán)境中運行它們。在不同類型的基礎(chǔ)架構(gòu)中,容器以一種標準的方式,提供了輕量級打包和部署應(yīng)用程序的方法。

容器的這些特性使其對開發(fā)和運維人員極具吸引力。因為容器可以在任意支持容器的主機上運行一致,所以開發(fā)人員可以直接在本地測試相同的軟件,稍后就可以方便地部署到完整的生產(chǎn)環(huán)境中。同時,Container Format可以確保應(yīng)用程序的依賴項被放到鏡像中,簡化了手動操作的部分和發(fā)布流程。因為運行容器的主機和平臺是通用的,所以可以標準化管理基于容器系統(tǒng)的基礎(chǔ)架構(gòu)。

容器從容器鏡像中創(chuàng)建,其中包含了系統(tǒng)、應(yīng)用程序和容器環(huán)境。容器鏡像和創(chuàng)建特定容器模板一樣,同一鏡像可用于生成任意數(shù)量的運行中的容器。這與類和實例在面向?qū)ο缶幊讨械墓ぷ鞣绞筋愃疲阂粋€單獨的類可以用于創(chuàng)建任何數(shù)量的實例,一個單獨的容器鏡像也可以用于創(chuàng)建任何數(shù)量的容器。這類比喻也適用于繼承方面,因為容器鏡像可以作為其他自定義容器鏡像的父級。用戶可以從外部資源下載預(yù)先構(gòu)建的容器,也可以根據(jù)需要構(gòu)建自定義鏡像。

什么是Docker?

雖然Linux容器是一種能夠以不同方式實現(xiàn)和管理的通用技術(shù),但Docker是目前為止運行構(gòu)建和容器最常見的方式。它包含了一系列的工具,可以允許用戶創(chuàng)建容器鏡像,從外部鏡像倉庫推送或者拉取鏡像,還能在不同的環(huán)境中運行和管理容器。可以這么說,容器在Linux上迅速流行主要歸功于Docker在2013年發(fā)布之后所做的努力。

docker命令行工具扮演了多種角色。它可以充當容器工作負載的流程管理器來運行和管理容器。此外,它還可以通過閱讀和執(zhí)行Dockerfile或者拍攝運行中的容器快照來創(chuàng)建新的容器鏡像。這一命令還可以和Docker Hub(一種容器鏡像倉庫)交互,來拉取新的容器鏡像或者推送本地鏡像以保存或者發(fā)布它們。

雖然在Linux上Docker只提供了眾多實現(xiàn)方式中的一種,但它讓容器世界更容易進入,并且具備最常用的解決方案。盡管已經(jīng)為容器開發(fā)了開放標準以確?;ネㄐ?,但大多數(shù)與容器相關(guān)的平臺和工具都將Docker作為測試和發(fā)布軟件時的主要參照。對于既定環(huán)境,Docker可能并不總是最高性能的解決方案,但它可能是最受歡迎的測試選項之一。實際上,對于容器而言,雖然在Linux上有許多其他的替代方案,但大家通常都會首先學(xué)習Docker,這并非毫無理由,因為Docker無處不在并且在容器生態(tài)系統(tǒng)中對術(shù)語、標準以及工具都擁有影響力。

容器快速入門完全指南cdn.xitu.io/2019/7/22/16c1766bf0b31739?w=640&h=427&f=jpeg&s=54358">

容器如何工作?

了解容器的工作原理對于討論其與虛擬機的區(qū)別大有裨益。

虛擬機vs容器

虛擬機,或稱VMs,是一種硬件虛擬技術(shù),它可以讓您完全虛擬化硬件或計算機資源。一個單獨的訪客操作系統(tǒng)管理虛擬機與運行在主機系統(tǒng)的OS完全分開。在主機系統(tǒng)上,一個名為hypervisor的軟件負責啟動、停止和管理虛擬機。由于虛擬機作為完全不同的計算機運行,在正常運行條件下不會影響主機系統(tǒng)或其他虛擬機,因此虛擬機具備極大的隔離性和安全性。然而,它們也存在不足。例如,虛擬化整個計算機需要VM使用大量的資源。此外,由于虛擬機在單獨的訪客操作系統(tǒng)上運行,因此虛擬機的配置和啟動時間可能相當慢。同時,因為虛擬機作為一個獨立的機器運行,所以管理員通常需要采用類似基礎(chǔ)架構(gòu)的管理工具和流程來更新和運行各個環(huán)境。

總而言之,虛擬機允許您將計算機的資源細分為較小的單個計算機,但最終結(jié)果與管理一組物理計算機沒有顯著差異。計算機規(guī)模擴大,每個主機的責任可能變得更加集中,但您使用的工具,策略和流程以及系統(tǒng)的功能可能不會有明顯的變化。

與虛擬化整個計算機相比,容器則采用不同的方式——直接虛擬化操作系統(tǒng)。它作為由主機操作系統(tǒng)內(nèi)核管理的專用進程運行,但具有受限且嚴格操作的系統(tǒng)進程、資源和環(huán)境視圖。容器存在于共享系統(tǒng)上,并且像它們在完全控制的計算機上運行一樣。

容器快速入門完全指南

與其將容器視為像虛擬機一樣的完整計算機,倒不如說更常見的管理容器與應(yīng)用程序更為相似。例如,雖然您可以將SSH服務(wù)器綁定到容器中,但這不是推薦的模式。相反,調(diào)試通常通過日志記錄界面執(zhí)行,通過滾動新鏡像來應(yīng)用更新,并且不再強調(diào)服務(wù)管理以支持管理整個容器。

這些特性意味著容器占據(jù)著位于虛擬機的強隔離性和傳統(tǒng)流程的本地管理之間的空間。容器提供區(qū)域化和以流程為中心的虛擬化,可在限制,靈活性和速度之間實現(xiàn)良好平衡。

Linux cgroups和命名空間

Linux控制組或cgroups是一種內(nèi)核功能,允許將進程及其資源作為一個單元進行分組、隔離和管理。cgroups和流程一起綁定,并且決定資源的訪問權(quán)限以及提供管理和監(jiān)控它們行為的機制。它們遵循分層系統(tǒng),允許子進程繼承其父進程的條件并可能采用進一步的限制。cgroups將進程作為一個組,并將所需的功能與其綁定在一起,并限制它們可以訪問的資源。

另一個容器所依賴的內(nèi)核功能是Linux命名空間。命名空間限制了什么進程可以看到余下的系統(tǒng)。運行在命名空間內(nèi)部的進程無法獲取任何命名空間外運行的進程。由于命名空間定義了與系統(tǒng)其余部分分離的獨特上下文,因此命名空間的進程樹需要反映該上下文。在命名空間內(nèi)部,主進程變?yōu)镻ID1(process ID1),傳統(tǒng)上為OS的init系統(tǒng)保留PID。在命名空間內(nèi)構(gòu)建嚴格操作的虛擬進程樹讓在容器內(nèi)運行的進程表現(xiàn)得像在正常的、不受限制的環(huán)境中操作一樣。

容器化的優(yōu)勢

上文中我們已經(jīng)討論了一些能夠使得容器成為可能的技術(shù),那么現(xiàn)在我們來看一看它們最重要的特性有什么。

輕量級虛擬化

與使用虛擬機的硬件虛擬化相比,容器顯得更為輕便。首先,容器使用主機系統(tǒng)的內(nèi)核并在該操作系統(tǒng)中作為分區(qū)進程運行,而不是虛擬化所有硬件資源并在該環(huán)境中運行完全獨立的操作系統(tǒng)。

其次,從主機的角度出發(fā),容器像其他進程一樣運行,這意味著它們可以迅速啟動和停止并且可以使用受限制的資源。此外,容器不僅可以查看和訪問主機的進程空間和資源子集,而且還能夠在大多數(shù)情況下,可以表現(xiàn)得像一個完全獨立的操作系統(tǒng)。

容器鏡像本身也可以非常小。最小的鏡像能夠使依賴于拉取最新鏡像的工作流不會出現(xiàn)顯著延遲。這是許多容錯,自我修復(fù)的分布式系統(tǒng)的要求。

環(huán)境隔離

通過使用cgroups以及命名空間等Linux內(nèi)核功能,容器可以與主機環(huán)境彼此隔離。這提供了一定程度的功能限制,以防止容器環(huán)境互相干擾。

雖然不夠強大,不足以被視為完全安全沙箱,但這種隔離確實具有優(yōu)勢。由于主機和每個容器將軟件保存在單獨的文件系統(tǒng)中,因此更容易避免依賴性和庫沖突。網(wǎng)絡(luò)環(huán)境可以分離,因此容器內(nèi)的應(yīng)用程序可以綁定到其本機端口,而無需擔心主機系統(tǒng)中或其他容器中的軟件會產(chǎn)生沖突。然后,管理員可以根據(jù)需要選擇如何將容器的網(wǎng)絡(luò)映射到主機網(wǎng)絡(luò)中。

標準化打包格式和運行時目標

容器最引人注目的其中一個優(yōu)勢是它可以統(tǒng)一和簡化打包和部署軟件的流程。容器鏡像可以讓您綁定應(yīng)用程序和所有的運行時需求到可跨多個基礎(chǔ)架構(gòu)部署的單個單元中。

在容器內(nèi)部,開發(fā)人員可以安裝和使用其應(yīng)用程序所需的任一庫,而無需擔心干擾主機系統(tǒng)庫。當鏡像創(chuàng)建時,依賴項是版本鎖定的。容器運行時可以充當一個標準、穩(wěn)定的部署平臺,因此開發(fā)人員無需了解容器在哪個特定的機器上運行。只要容器運行時可操作且有足夠的系統(tǒng)資源可用,容器就會像在開發(fā)環(huán)境中那樣運行。

同樣的,從運維的角度來看,容器化使部署環(huán)境的需求標準化了。管理員可以專注于維護充當容器平臺的通用主機,并分配這些計算機可以訪問的資源池,而不是基于應(yīng)用程序的語言、運行時和依賴項來配置和維護特定的環(huán)境。綁定容器中的所有特定應(yīng)用程序特性會在應(yīng)用程序的關(guān)注點與平臺的關(guān)注點之間創(chuàng)建自然邊界。

可擴展性

容器的既定范式可以讓您以一種相對簡單的機制來擴展您的應(yīng)用程序。輕量級鏡像、快速的啟動時間、創(chuàng)建測試以及部署“黃金鏡像”以及標準化的運行時環(huán)境這些特性使得構(gòu)建高度擴展的系統(tǒng)成為可能。

一個可擴展性的系統(tǒng)是高度依賴于應(yīng)用程序架構(gòu)和容器鏡像本身是如何構(gòu)建的。與容器范例配合良好的設(shè)計將會充分發(fā)揮容器格式的優(yōu)勢,以實現(xiàn)速度、可用性和可管理性的良好平衡。面向服務(wù)的架構(gòu),特別是微服務(wù),在容器化環(huán)境中非常流行,因為將應(yīng)用程序分解為具有集中目的的離散組件使得開發(fā),擴展和更新更加簡單。

容器快速入門完全指南

容器專用術(shù)語

在本文結(jié)束之前,讓我們回顧一下我們在本文中介紹的一些關(guān)鍵術(shù)語,以及您在繼續(xù)學(xué)習時可能遇到的一些新術(shù)語。

  • 容器:在Linux系統(tǒng)中,容器是一個操作系統(tǒng)虛擬化技術(shù),來打包應(yīng)用程序及它們的依賴項并在獨立的環(huán)境中運行它們。

  • 容器鏡像:容器鏡像是靜態(tài)文件,其定義文件系統(tǒng)以及特定容器配置的行為。它還可以作為創(chuàng)建容器的模板。

  • 容器編排:容器編排用于描述跨多個主機管理容器隊列所需的進程和工具。它通常使用容器平臺控制擴展、容錯、資源分配和調(diào)度。

  • 容器運行時:容器運行時是在一臺主機上運行和管理容器的組件。其最基本的要求通常是能夠從給定的鏡像中配置容器,但許多運行時還綁定了其他功能,如進程管理、監(jiān)控和鏡像管理。Docker內(nèi)在docker命令中包含了一個容器運行時,但還有許多其他可用于不同用例的替代方案。

  • Docker:Docker是第一個成功推廣Linux容器概念的技術(shù)。其中,Docker的工具生態(tài)系統(tǒng)包括docker,一個帶有大量容器的容器運行時以及鏡像管理特性,docker-compose,一個定義和運行多容器應(yīng)用程序的系統(tǒng),以及Docker Hub,容器鏡像倉庫。

  • Dockerfile:Dockerfile是一個用于描述如何構(gòu)建一個容器鏡像的文本文件。它定義了基本的鏡像,在系統(tǒng)內(nèi)運行的命令以及在容器內(nèi)運行時啟動和管理進程的方式。雖然Dockerfile并非唯一的選項,但它是最常用的定義容器鏡像的格式,即使不使用Docker鏡像的構(gòu)建功能。

  • Kata Containers:Kata Container是一種使用模型,工作流和工具來管理輕量級虛擬機的方法,它復(fù)制了容器的使用體驗。Kata Container尋求獲得容器的好處,同時提供更強大的隔離和安全性。

  • Kubernetes:Kubernetes是一個功能強大的容器編排平臺,它可以管理容器主機的集群以及運行在上面的工作負載。Kubernetes提供工具和抽象化,以在高可用生產(chǎn)環(huán)境中部署、擴展、監(jiān)控和管理容器。

  • Linux cgroups:Linux cgroups,或稱控制組,是綁定了進程的內(nèi)核功能,并且可以決定它們對資源的訪問權(quán)限。Linux中的容器是使用cgroups實現(xiàn)的,可以方便管理資源和單獨的進程。

  • Linux命名空間:Linux命名空間用于將進程或cgroup的可見性限制為余下系統(tǒng)的一種內(nèi)核功能。在Linux的容器使用命名空間來幫助隔離工作負載和來自運行在系統(tǒng)上的其他進程的資源。

  • LXC:LXC是Linux容器化的一種形式,它早于Docker和其他許多技術(shù),同時也依賴于許多相同的內(nèi)核技術(shù)。相比于Docker,LXC通常虛擬化整個操作系統(tǒng)而非僅僅運行應(yīng)用程序的進程,這與虛擬機更為相似。

  • 虛擬機:虛擬機,或VMs,是一種硬件虛擬技術(shù),它模擬為一整臺計算機。在虛擬機內(nèi)安裝一個完整的操作系統(tǒng)可用于管理內(nèi)部組件和訪問虛擬機的計算資源。

  • 虛擬化:虛擬化是一個創(chuàng)建、運行以及管理虛擬環(huán)境或者計算機資源的過程。虛擬化是一種抽象物理資源的方式,并且常用于以不同目的分割資源池。

總 結(jié)

容器并非魔彈,但它們的確具備一些優(yōu)于在裸機上運行軟件或使用其他虛擬化技術(shù)的優(yōu)勢。通過提供輕量級、功能性隔離和開發(fā)豐富的工具生態(tài)系統(tǒng)來幫助管理復(fù)雜性,為容器在開發(fā)期間和整個運維生命周期中提供了極大的靈活性和可控性。


本文名稱:容器快速入門完全指南
轉(zhuǎn)載來源:http://weahome.cn/article/jedhdi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部