女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

容器快速入門指南

jf_78858299 ? 來源:Rancher ? 作者: JUSTIN ? 2023-02-14 11:48 ? 次閱讀

介 紹

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

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

什么是容器?

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

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

容器從容器鏡像中創(chuàng)建,其中包含了系統(tǒng)、應(yīng)用程序和容器環(huán)境。容器鏡像和創(chuàng)建特定容器模板一樣,同一鏡像可用于生成任意數(shù)量的運(yùn)行中的容器。這與類和實(shí)例在面向?qū)ο?a href="http://www.asorrir.com/v/tag/1315/" target="_blank">編程中的工作方式類似:一個單獨(dú)的類可以用于創(chuàng)建任何數(shù)量的實(shí)例,一個單獨(dú)的容器鏡像也可以用于創(chuàng)建任何數(shù)量的容器。這類比喻也適用于繼承方面,因?yàn)槿萜麋R像可以作為其他自定義容器鏡像的父級。用戶可以從外部資源下載預(yù)先構(gòu)建的容器,也可以根據(jù)需要構(gòu)建自定義鏡像。

什么是Docker?

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

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

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

容器如何工作?

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

虛擬機(jī)vs容器

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

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

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

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

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

Linux cgroups和命名空間

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

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

容器化的優(yōu)勢

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

輕量級虛擬化

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

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

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

環(huán)境隔離

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

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

標(biāo)準(zhǔn)化打包格式和運(yùn)行時目標(biāo)

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

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

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

可擴(kuò)展性

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

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

容器專用術(shù)語

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

  • 容器: 在Linux系統(tǒng)中,容器是一個操作系統(tǒng)虛擬化技術(shù),來打包應(yīng)用程序及它們的依賴項(xiàng)并在獨(dú)立的環(huán)境中運(yùn)行它們。
  • 容器鏡像: 容器鏡像是靜態(tài)文件,其定義文件系統(tǒng)以及特定容器配置的行為。它還可以作為創(chuàng)建容器的模板。
  • 容器編排: 容器編排用于描述跨多個主機(jī)管理容器隊(duì)列所需的進(jìn)程和工具。它通常使用容器平臺控制擴(kuò)展、容錯、資源分配和調(diào)度。
  • 容器運(yùn)行時: 容器運(yùn)行時是在一臺主機(jī)上運(yùn)行和管理容器的組件。其最基本的要求通常是能夠從給定的鏡像中配置容器,但許多運(yùn)行時還綁定了其他功能,如進(jìn)程管理、監(jiān)控和鏡像管理。Docker內(nèi)在docker命令中包含了一個容器運(yùn)行時,但還有許多其他可用于不同用例的替代方案。
  • Docker: Docker是第一個成功推廣Linux容器概念的技術(shù)。其中,Docker的工具生態(tài)系統(tǒng)包括docker,一個帶有大量容器的容器運(yùn)行時以及鏡像管理特性,docker-compose,一個定義和運(yùn)行多容器應(yīng)用程序的系統(tǒng),以及Docker Hub,容器鏡像倉庫。
  • Dockerfile: Dockerfile是一個用于描述如何構(gòu)建一個容器鏡像的文本文件。它定義了基本的鏡像,在系統(tǒng)內(nèi)運(yùn)行的命令以及在容器內(nèi)運(yùn)行時啟動和管理進(jìn)程的方式。雖然Dockerfile并非唯一的選項(xiàng),但它是最常用的定義容器鏡像的格式,即使不使用Docker鏡像的構(gòu)建功能。
  • Kata Containers Kata Container是一種使用模型,工作流和工具來管理輕量級虛擬機(jī)的方法,它復(fù)制了容器的使用體驗(yàn)。Kata Container尋求獲得容器的好處,同時提供更強(qiáng)大的隔離和安全性。
  • Kubernetes: Kubernetes是一個功能強(qiáng)大的容器編排平臺,它可以管理容器主機(jī)的集群以及運(yùn)行在上面的工作負(fù)載。Kubernetes提供工具和抽象化,以在高可用生產(chǎn)環(huán)境中部署、擴(kuò)展、監(jiān)控和管理容器。
  • Linux cgroups: Linux cgroups,或稱控制組,是綁定了進(jìn)程的內(nèi)核功能,并且可以決定它們對資源的訪問權(quán)限。Linux中的容器是使用cgroups實(shí)現(xiàn)的,可以方便管理資源和單獨(dú)的進(jìn)程。
  • Linux命名空間: Linux命名空間用于將進(jìn)程或cgroup的可見性限制為余下系統(tǒng)的一種內(nèi)核功能。在Linux的容器使用命名空間來幫助隔離工作負(fù)載和來自運(yùn)行在系統(tǒng)上的其他進(jìn)程的資源。
  • LXC: LXC是Linux容器化的一種形式,它早于Docker和其他許多技術(shù),同時也依賴于許多相同的內(nèi)核技術(shù)。相比于Docker,LXC通常虛擬化整個操作系統(tǒng)而非僅僅運(yùn)行應(yīng)用程序的進(jìn)程,這與虛擬機(jī)更為相似。
  • 虛擬機(jī): 虛擬機(jī),或VMs,是一種硬件虛擬技術(shù),它模擬為一整臺計(jì)算機(jī)。在虛擬機(jī)內(nèi)安裝一個完整的操作系統(tǒng)可用于管理內(nèi)部組件和訪問虛擬機(jī)的計(jì)算資源。
  • 虛擬化: 虛擬化是一個創(chuàng)建、運(yùn)行以及管理虛擬環(huán)境或者計(jì)算機(jī)資源的過程。虛擬化是一種抽象物理資源的方式,并且常用于以不同目的分割資源池。

總 結(jié)

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 容器
    +關(guān)注

    關(guān)注

    0

    文章

    507

    瀏覽量

    22353
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    506

    瀏覽量

    12626
  • kubernetes
    +關(guān)注

    關(guān)注

    0

    文章

    239

    瀏覽量

    8953
收藏 人收藏

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    Fuego快速入門指南

    Fuego快速入門指南只需幾個簡單的步驟即可在你的硬件上從Fuego運(yùn)行測試。注意:這是快速入門指南
    發(fā)表于 12-17 07:00

    AT32 IDE快速入門指南

    AT32 IDE 快速入門指南幫助用戶快速熟悉Artery AT32 IDE的簡明指南
    發(fā)表于 10-26 06:13

    ISE,Keil C和ICCAVR快速入門指南

    ISE,Keil C和ICCAVR快速入門指南:ISE6.2I快速入門介紹,Keil C快速
    發(fā)表于 11-01 23:20 ?0次下載
    ISE,Keil C和ICCAVR<b class='flag-5'>快速</b><b class='flag-5'>入門</b><b class='flag-5'>指南</b>

    PSCOPE快速入門指南

    PSCOPE快速入門指南
    發(fā)表于 05-23 20:22 ?10次下載
    PSCOPE<b class='flag-5'>快速</b><b class='flag-5'>入門</b><b class='flag-5'>指南</b>

    Qt for MCUs 快速入門指南

    Qt for MCUs 快速入門指南
    發(fā)表于 01-09 19:19 ?1次下載
    Qt for MCUs <b class='flag-5'>快速</b><b class='flag-5'>入門</b><b class='flag-5'>指南</b>

    TileLib 快速入門指南

    TileLib 快速入門指南
    發(fā)表于 03-13 19:14 ?0次下載
    TileLib <b class='flag-5'>快速</b><b class='flag-5'>入門</b><b class='flag-5'>指南</b>

    Renesas R32C/111 入門套件快速入門指南

    Renesas R32C/111 入門套件快速入門指南
    發(fā)表于 04-26 19:36 ?0次下載
    Renesas R32C/111 <b class='flag-5'>入門</b>套件<b class='flag-5'>快速</b><b class='flag-5'>入門</b><b class='flag-5'>指南</b>

    瑞薩 SH7137 入門套件快速入門指南

    瑞薩 SH7137 入門套件快速入門指南
    發(fā)表于 04-27 19:59 ?0次下載
    瑞薩 SH7137 <b class='flag-5'>入門</b>套件<b class='flag-5'>快速</b><b class='flag-5'>入門</b><b class='flag-5'>指南</b>

    瑞薩入門套件 LCD 應(yīng)用板快速入門指南

    瑞薩入門套件 LCD 應(yīng)用板快速入門指南
    發(fā)表于 04-28 18:44 ?1次下載
    瑞薩<b class='flag-5'>入門</b>套件 LCD 應(yīng)用板<b class='flag-5'>快速</b><b class='flag-5'>入門</b><b class='flag-5'>指南</b>

    Renesas 7542入門套件快速入門指南

    Renesas 7542 入門套件快速入門指南
    發(fā)表于 04-28 19:42 ?0次下載
    Renesas 7542<b class='flag-5'>入門</b>套件<b class='flag-5'>快速</b><b class='flag-5'>入門</b><b class='flag-5'>指南</b>

    瑞薩 3803L 入門套件快速入門指南

    瑞薩 3803L 入門套件快速入門指南
    發(fā)表于 04-28 19:42 ?0次下載
    瑞薩 3803L <b class='flag-5'>入門</b>套件<b class='flag-5'>快速</b><b class='flag-5'>入門</b><b class='flag-5'>指南</b>

    Lab on the Cloud 快速入門指南

    Lab on the Cloud 快速入門指南
    發(fā)表于 05-12 19:10 ?0次下載
    Lab on the Cloud <b class='flag-5'>快速</b><b class='flag-5'>入門</b><b class='flag-5'>指南</b>

    Lab on the Cloud 快速入門指南

    Lab on the Cloud 快速入門指南
    發(fā)表于 06-29 19:02 ?0次下載
    Lab on the Cloud <b class='flag-5'>快速</b><b class='flag-5'>入門</b><b class='flag-5'>指南</b>

    Qt for MCUs 快速入門指南

    Qt for MCUs 快速入門指南
    發(fā)表于 06-30 19:16 ?3次下載
    Qt for MCUs <b class='flag-5'>快速</b><b class='flag-5'>入門</b><b class='flag-5'>指南</b>

    TileLib 快速入門指南

    TileLib 快速入門指南
    發(fā)表于 07-04 20:32 ?0次下載
    TileLib <b class='flag-5'>快速</b><b class='flag-5'>入門</b><b class='flag-5'>指南</b>