Docker 執行機制

2021-08-30 13:28:46 字數 2475 閱讀 9867

2.映象原理

3.容器資料卷

docker是乙個client-server結構的系統,docker守護程序執行在主機上,然後通過socket連線從客戶端訪問,守護程序從客戶端接受命令並管理執行在主機上的容器。

容器是乙個執行時環境。

@1.docker用的是宿主物理機上的硬體,不用hypervisor實現硬體虛擬化,所以cpu,記憶體利用率在效率上有優勢

@2.docker利用的是宿主機的核心,不需要guest os,因此docker不需要和虛擬機器一樣要載入作業系統的核心,利用的是宿主機的作業系統,因此過程非常快,是秒級的(而新建乙個虛擬機器時,虛擬機器上的虛擬軟體需要載入guent os,這個過程時分鐘級別的)

映象是乙個輕量級,可執行的軟體包,用來打包軟體執行環境及基於環境的軟體,它包含軟體執行時所需的所有的,包括**、執行庫,環境變數和配置檔案

@1.docker映象實際上就是一層一層的檔案系統組成的,這種層級的檔案系統叫unionfs(稱為:聯合檔案系統,是一種分層、輕量級並且高效能的檔案系統,它支援對檔案系統的修改作為一次提交一層層的疊加,同時可將不同的目錄掛載在同乙個檔案系統下。unionfs是docker映象的基礎,映象可通過分層來進行繼承,基於基礎映象(沒有父映象)製作各種具體的應用映象)

@2.unionfs特性:一次同時載入多個檔案系統,但從外表看起來只有乙個檔案系統,聯合載入會把各層檔案系統疊加起來,這樣最終的檔案系統會包含所有底層的檔案和目錄

先將兩個概念,bootfs和rootfs。bootfs:包括bootloader和kernel,bootloader主要引導載入kernel。linux剛啟動時會載入bootfs檔案系統(docker底層就是bootfs),當boot載入完整個核心就在記憶體中了,此時記憶體的使用權已由bootfs轉交給核心。此時系統會寫在bootfs;rootfs:在bootfs之上,包含linux中的/dev,/proc,/bin,/etc等標準目錄和檔案,rootfs就是各種不同的作業系統的發行版,比如ubuntu,centos。而我們平時安進虛擬機器的centos都是好幾個g,但docker只有200m,是因為精簡的os,rootfs可以很小,只需要最基本的命令,工具和程式就可以了,因為底層直接用host的kernel,自己只需要rootfs就行了。因此對於不同的linux發行版,bootfs基本一致的,rootfs有差別,因此不同的發行版可共用bootfs

實現資源共享。(比如多個映象都是從基礎映象構建而來的,那麼宿主機只需在磁碟上儲存乙份基礎映象,同時記憶體中只需載入乙份基礎映象,就可為所有容器服務了,且映象的每層都可被共享)

@1.唯讀

@2.當執行時,乙個新的可寫層載入到映象的「頂部」,這一層通常稱為「容器層」,」容器層「之下的叫」映象層「

docker容器是伴隨容器的,當容器刪除後如何不生成新的映象講執行時的資料作為映象的一部分儲存下來資料就會丟失,為了儲存資料我們就使用卷。(類似redis裡的ros和rdb檔案)

@1.容器的持久化

@2.容器間繼承和共享資料

docker run -it -v /宿主機絕對目錄:/容器內目錄  映象id

用來構建docker映象的構建檔案,由一些列命令和引數構成的指令碼

@1.每條保留字都大寫,且必須後面帶至少乙個引數

@2.每條指令都會建立乙個映象,並對映象進行提交

@3.指令按照從上到下,順序執行

@1.編寫構建檔案

@2.docker build 構建檔案

@3.docker run 映象

@1.從基礎映象執行乙個容器

@2.執行乙個命令並對容器進行修改

@3.執行類似docker commit的操作提交乙個新的映象層

@4.docker再基於剛提交的映象執行乙個新容器

@5.接著執行下一條指令,直至所有指令執行完成

session執行機制

session機制是一種伺服器端的機制,伺服器使用一種類似於雜湊表 的結構 也可能就是使用 雜湊表 來儲存資訊。當程式需要為某個客戶端的請求建立乙個session的時候,伺服器首先檢查這個客戶端的請求裡是否已包含了乙個session標識 稱為sessionid,如果已包含乙個sessionid則說明...

try catch finally執行機制

finally的執行 如下的程式所示,注釋中是執行的順序 public class test public static string test finally public static string test1 finally其實是僅在return 語句執行前執行,如果return 乙個函式,那...

runtime執行機制

這篇文章主要介紹的是runtime是什麼以及怎麼用!希望對讀者有所幫助!第乙個問題,1 runtime實現的機制是什麼,怎麼用,一般用於幹嘛?runtime是一套比較底層的純c語言api,屬於1個c語言庫,包含了很多底層的c語言api。在我們平時編寫的oc 中,程式執行過程時,其實最終都是轉成了ru...