Docker的基礎理論與關鍵點是怎么樣的,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
一般來說,虛擬化既可以通過硬件模擬來實現,例如 Vmware、KVM等,主要是通過虛擬硬件的方式,重新創建一個操作系統,操作系統本身并不知道當前的硬件是否真的存在,這種形式又稱為操作系統級虛擬化。
而現在以Docker為代表的容積技術,為虛擬化技術提供了創新和突破。
Docker 是使用容器技術實現應用虛擬化的一個開源項目。
它與傳統的虛擬機技術有本質的區別,虛擬機技術虛擬出來的單個虛擬機可以部署各種應用,本質來說就是多了一臺可遷移的操作系統;而Docker是一個輕量級容器,主要是針對應用進行定制,一個Docker容器封裝一個應用,提供了這個應用運行的環境,所以被稱為“應用的集裝箱”,這樣細粒度更高。
Docker是基于操作系統的軟件,他利用了操作系統已有的特性,可以實現遠超傳統虛擬機的輕量級虛擬化,主要有如下幾點:
1、更快的交付和部署,開發人員可以通過鏡像快速構建開發環境,測試人員可以通過完全相同的環境來進行測試,通過Docker部署也會變的簡單高效。
2、更高效的資源利用,Docker本身對資源的消耗極低,這方面的性能傳統虛擬機是無法比擬的,這樣一臺服務器可以構建更多的Docker應用。
3、更輕松的擴展和遷移,Docker幾乎可以在任何平臺上運行。
4、更簡單的更新管理,通過Dockerfile,可以通過簡單的修改可以實現以往大量的更新工作。
使用Docker所有的時間基本都是在處理它的三大核心要素:鏡像、容器、倉庫。
鏡像 是一個只讀模版,是對容器的定義,就像Java 中 的類一樣,通過類可以創建實例,實例就是容器,容器則是我們真正運行起來提供服務的應用,通過提交容器可以形成新的鏡像,遷移鏡像又可以在其他服務器生成容器。
倉庫是指存放鏡像的地方,目前Docker的倉庫(Docker Hub)中存放了非常多的基礎鏡像文件,我們可以直接下載作為應用的基礎模版。
當然我們也可以搭建我們的私人倉庫,在內部網絡內共享我們的鏡像。
Docker 是誕生于 Linux的一種容器化虛擬化技術,深度運用了Linux操作系統的多向底層支持技術,通過這些技術來實現 Docker 的容器級虛擬化。
命名空間(Namespace)是Linux內核的一個強大特性,利用這一特性每個容器都擁有自己獨立的命名空間,運行在其中的應用就像在獨立的操作系統環境中一樣,容器之間資源獨立、互不影響。
這種資源隔離特性隔離了主機名與域名、進程編號、內存、網絡設備、文件系統、用戶和用戶組,雖然所有的容器都通過操作系統共享了主機的硬件資源,但是通過Namespace實現了基于操作系統級別的資源隔離,這種形式效率很高。
控制組(Control Group)也是Linux內核的一個特性、主要對共享資源進行隔離、限制。Docker通過控制分配到容器的資源,實現了避免多個容器同事運行是對宿主機系統的資源競爭。
控制組主要提供了如下功能:
資源限制,可以將組設置為不超過設定的內存限制。
優先級,設置優先級可以讓一些組優先得到更多的CPU資源。
資源審計,對每個組分配的資源進行統計。
隔離,是一個組不能看到另一個組的資源(包括進程,網絡連接和文件系統)。
控制,控制掛起,重新啟動等操作。
聯合文件系統是Linux一種高性能分層文件系統,目前有多種實現技術方案,它具有兩個基本特性:
每一次修改作為一次提交,并層層疊加
將不同的目錄掛在到同一個虛擬文件系統下
聯合文件系統是Docker實現的基礎技術,Docker鏡像可以通過分層來繼承,例如 用戶基于基礎鏡像制作各種不同的應用鏡像,這些鏡像通用了一個基礎鏡像,這些應用只用記錄這些分層信息,從而大大提升了存儲效率。
我們可以通過 docker history 命令查看一個鏡像的分層組成。
將不同的目錄掛在到同一個虛擬文件系統下,這樣就實現了外置數據卷的掛載。
對于Docker鏡像來說構成鏡像的這些層是不可修改的,只讀的,當Docker利用鏡像啟動一個容器時,將在鏡像文件系統的最頂端掛載一個新的可讀寫層給容器,容器中內容的更新會發生在可讀寫層。當所操作的對象位于較深的層時,需要先復制到最上面的可讀寫層,當數據對象較大時,IO性能會較差,所以一般通過數據卷掛載的方式,而不是直接修改鏡像內的數據就是這個原因。
看完上述內容,你們掌握Docker的基礎理論與關鍵點是怎么樣的的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。