Linux安裝Docker並運行Ubuntu系統

Linux安裝Docker並運行Ubuntu系統

Docker是一種容器,什麼叫容器?在軟件開發中,我們經常碰到“這程序在我的電腦上明明沒問題啊,怎麼在客戶的電腦上就有問題?”這是因爲各個電腦的軟件、硬件不一致。

有沒有一種統一的、虛擬的軟件硬件平臺,在上面開發好軟件後發給客戶,客戶就可以直接在這個平臺上運行程序?有的,這就是容器。容器有很多種,Docker是其中比較好的。
跟VMware相比,Docker是一個輕量級的軟件,運行速度快。

使用Docker前,需要了解2個概念:Image和container,即鏡像、容器。鏡像就是一個環境包,這個環境包可以移動到任意的Docker平臺裏運行。而容器就是鏡像的實例,一個鏡像可以啓動多個容器。
簡單地類比,映像就像一個Word軟件,這是廠家發佈的,你無法修改;容器就是你啓動Word軟件,可以啓動多個Word軟件,在每一個Word軟件裏編寫不同的文檔。

Docker的核心是“統一文件系統”(union file system),什麼意思?
假設你有2個目錄:lower和upper,它們可以合併成一個新目錄merged,內容如下:
在這裏插入圖片描述
合併的原則是什麼?upper目錄優先級更高,可以覆蓋lower目錄,lower目錄是隻讀的,upper目錄是可讀可寫的。這個規則可以解析得更具體:

① 文件名及目錄不相同,則 lower 及 upper 目錄中的文件及目錄按原結構都融入到 merged 目錄中;

② 文件名相同,只顯示 upper 層的文件:
如上圖在 lower 和 upper 目錄下及下層目錄 dir_A 下都有 same.txt 文件,但在合併到 merged 目錄時,則只顯示 upper 的,而 lower 的隱藏。

③ 目錄名相同, 對目錄進行合併成一個目錄:
如上圖在 lower 及 upper 目錄下都有 dir_A 目錄,將目錄及目錄下的所有文件合併到 merged 的 dir_A 目錄,目錄內如有文件名相同,則同樣只顯示 upper 的,如上圖中 dir_A 目錄下的same.txt文件。

讀文件時,upper目錄中有該文件時就從upper目錄讀取;否則去lower目錄讀取。
新建、修改、刪除文件時,只會影響到upper目錄,lower目錄是隻讀的不受影響。
在Docker中,鏡像提供lower層的只讀文件;容器提供upper層的可讀可寫文件,如下:
在這裏插入圖片描述
當我們啓動一個容器時,就是在鏡像提供的lower文件系統的基礎上,創建一個可讀可寫的upper層文件系統。
我們可以啓動多個容器,就是創建多個upper層文件系統,這些容器的upper層文件系統互不影響。

我們提供了鏡像文件,裏面安裝好了各種軟件;你需要做的是下載鏡像、啓動容器,在容器裏下載你的程序、編譯它們。

參考文章:Linux overlay文件系統解析
全文下載:嵌入式Linux系統開發完全手冊 第二版

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