了解驅動Docker的核心技術將讓您更深入地了解Docker的作業原理,并有助于您更有效地使用該平臺,
Linux容器(LXC)
Linux容器(LXC)是Docker的基礎, LXC是一種輕量級的虛擬化解決方案,允許多個隔離的Linux系統在單個主機上運行,無需全功能的虛擬化, LXC有效地以安全和優化的方式隔離應用程式及其依賴項,
控制組(cgroups)
控制組(cgroups)是Linux內核的一個功能,允許分配和管理資源,例如CPU、記憶體和I/O,到一組行程, Docker利用cgroups來限制容器使用的資源,并確保一個容器不會壟斷主機系統的資源,
聯合檔案系統(UnionFS)
UnionFS是一個檔案系統服務,允許在單個、統一的視圖中疊加多個檔案系統, Docker使用UnionFS為鏡像和容器創建分層方法,這使得共享公共檔案和更快的容器創建成為可能,
命名空間
命名空間是另一個Linux內核特性,提供行程隔離,它們允許Docker創建名為容器的隔離作業區,命名空間確保容器內的行程不能干擾容器外或主機系統上的行程,有幾種型別的命名空間,如PID、NET、MNT和USER,每個命名空間負責隔離行程的不同方面,
命名空間
命名空間是 Docker 用于提供容器之間隔離的核心技術之一,在本節中,我們將簡要討論命名空間是什么以及它們如何作業,
命名空間是什么?
在 Linux 內核中,命名空間是一種功能,允許隔離各種系統資源,使得行程及其子行程能夠看到與其他行程分離的系統子集,命名空間有助于創建抽象層,將容器化的行程與彼此和主機系統分開,
Linux 中有幾種型別的命名空間,包括:
- PID (行程 ID):隔離行程 ID 號碼空間,這意味著容器內的行程只看到它們自己的行程,而不是主機或其他容器中的行程,
- Network (NET):為每個容器提供網路堆疊的單獨視圖,包括其自己的網路介面、路由表和防火墻規則,
- Mount (MNT):以這樣的方式隔離檔案系統掛載點,以便每個容器都有自己的根檔案系統,并且掛載的資源僅出現在該容器內,
- UTS (UNIX Time Sharing System):允許每個容器擁有自己的主機名和域名,與其他容器和主機系統分開,
- User (USER):在容器和主機之間映射用戶和組識別符號,因此可以為容器內的資源設定不同的權限,
- IPC (行程間通信):允許或限制不同容器中的行程之間的通信,
Docker 如何使用命名空間
Docker 使用命名空間為容器創建隔離的環境,當容器啟動時,Docker 會為該容器創建一組新的命名空間,這些命名空間僅適用于容器內部,因此在容器內運行的任何行程都可以訪問一組與其他容器以及主機系統隔離的系統資源的子集,
通過利用命名空間,Docker 確保容器真正具有可移植性,可以在任何系統上運行,而不會與運行在同一主機上的其他行程或容器發生沖突或干擾,
總之,命名空間提供了一種資源隔離的級別,使得在同一主機上運行具有獨立系統資源的多個容器成為可能,而它們之間不會相互干擾,這是 Docker 容器技術的支柱性特征,
cgroups
cgroups或control groups是Linux內核的一個功能,它允許您在運行系統上的行程組之間分配和管理資源,例如CPU、記憶體、網路帶寬和I/O,它在提供資源隔離和限制運行容器可以使用的資源方面發揮著至關重要的作用,
Docker利用cgroups對容器進行資源約束,從而使它們具有一致和可預測的行為,以下是cgroups在Docker容器背景關系中的一些關鍵功能和優點:
資源隔離
cgroups有助于將每個容器限制在特定的資源集上,確保多個容器之間公平共享系統資源,這可以在不同的容器之間實作更好的隔離,以便不良行為的容器不會消耗所有可用資源,從而對其他容器產生負面影響,
限制資源
使用cgroups,您可以設定容器使用的各種系統資源的限制,例如CPU、記憶體和I/O,這有助于防止單個容器消耗過多的資源,從而對其他容器或主機系統造成性能問題,
優先處理容器
通過分配不同的資源份額,cgroups允許您優先或優先處理某些容器,這在某些容器比其他容器更為關鍵或在高資源爭用情況下非常有用,
監控
cgroups還提供監視單個容器資源使用的機制,這有助于了解容器性能并識別潛在的資源瓶頸,
總的來說,cgroups是Docker的一個重要的基礎技術,通過利用cgroups,Docker提供了一個健壯和高效的容器運行時環境,確保容器具有所需的資源,同時保持良好的整體系統性能,
Docker引擎
“Docker Desktop”和“Docker引擎”之間經常存在混淆, Docker引擎專指Docker桌面組件的一個子集,它是免費且開源的,只能在Linux上安裝,
Docker引擎包括:
- Docker命令列界面(CLI)
- Docker守護行程(dockerd),公開Docker應用程式編程介面(API)
Docker引擎可以構建容器鏡像,從容器鏡像運行容器,并且通常可以執行Docker桌面的大多數操作,但它僅適用于Linux,并且不提供Docker桌面提供的所有開發人員體驗,
最后
為了方便其他設備和平臺的小伙伴觀看往期文章,鏈接奉上:
公眾號 Let us Coding
,牛客,知乎,開源中國,CSDN,思否,掘金,InfoQ,簡書,博客園,慕課,51CTO,helloworld,騰訊開發者社區,阿里開發者社區
看完如果覺得有幫助,歡迎點贊、收藏和關注
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/557016.html
標籤:其他
下一篇:返回列表