Docker學習筆記之概念

背景

整理一下前一陣子對docker的學習筆記

概述

Docker負責管理鏡像和容器,是一種輕量級的虛擬機。

鏡像與容器

鏡像和容器的關係就相當於類和實例的關係,容器相當於運行在虛擬機上的操作系統,鏡像則相當於鏡像文件。

Docker執行run命令時,先在本地查詢鏡像,本機查不到就到hub上去下載,然後以此鏡像爲模板生產容器實例運行。如下圖所示

Docker和虛擬機的區別

1、Docker的抽象層比虛擬機少,沒有硬件資源虛擬化,運行在容器上的程序直接使用物理機的硬件資源,故而效率更高。

2、Docker利用物理機的內核,而不是Guest OS,所以新建容器時,Docker不必重新加載一個操作系統內核,直接利用物理機的即可。

兩者區別如下圖所示(左圖左邊爲虛擬機架構,右邊爲Docker架構):

聯合文件系統

這是一種分層、輕量級並且高性能的文件系統。支持對文件系統的修改作爲一次提交來一層層的疊加。

特性:一次加載多個文件系統,但從外面來看只有一個文件系統。聯合加載會把各層文件系統疊加起來,高層文件系統會包含所有底層文件系統的目錄和文件,這樣最終的文件系統會包含所有底層的文件和目錄。

聯合文件系統是Docker鏡像的基礎。

Docker鏡像加載原理

Docker鏡像實際上由一層層文件系統組成,也就是上面的聯合文件系統。

最底層的bootfs主要包含bootloader和kernel,bootloader主要負責引導加載kernel。容器啓動完成後,內核全部在內存中,系統會卸載bootfs。

第二層的rootfs則爲各種OS的發行版,裏面包含各種典型的linux系統目錄,如/dev、/bin、/etc等。

對於一個精簡的OS,rootfs只需要包含最基本的命令、工具和程序庫,因爲底層直接使用宿主機的kernel,所以不同的inux可以使用公用的bootfs。因此docker中的系統鏡像都比較小。

這樣做的好處就是共享資源:只加載一個鏡像,就可以被所有容器使用,鏡像的每一層都可以被共享

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章