Docker系列教程04 Docker映象詳解

2021-10-03 18:55:28 字數 2519 閱讀 9898

unionfs(聯合檔案系統):union檔案系統(unionfs)是一種分層、輕量級並且高效能的檔案系統,它支援對檔案系統的修改作為一次提交來一層層的疊加,同時可以將不同目錄掛載到同乙個虛擬檔案系統下(unite several directories into a single virtual filesystem)。union 檔案系統是 docker 映象的基礎。映象可以通過分層來進行繼承,基於基礎映象(沒有父映象),可以製作各種具體的應用映象。

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

docker的映象實際上由一層一層的檔案系統組成,這種層級的檔案系統unionfs。

bootfs(boot file system)主要包含bootloader和kernel, bootloader主要是引導載入kernel, linux剛啟動時會載入bootfs檔案系統,在docker映象的最底層是bootfs。這一層與我們典型的linux/unix系統是一樣的,包含boot載入器和核心。當boot載入完成之後整個核心就都在記憶體中了,此時記憶體的使用權已由bootfs轉交給核心,此時系統也會解除安裝bootfs。

rootfs (root file system) ,在bootfs之上。包含的就是典型 linux 系統中的 /dev, /proc, /bin, /etc 等標準目錄和檔案。rootfs就是各種不同的作業系統發行版,比如ubuntu,centos等等。

平時我們安裝進虛擬機器的centos都是好幾個g,為什麼docker這裡才200m??

對於乙個精簡的os,rootfs可以很小,只需要包括最基本的命令、工具和程式庫就可以了,因為底層直接用host的kernel,自己只需要提供 rootfs 就行了。由此可見對於不同的linux發行版, bootfs基本是一致的, rootfs會有差別, 因此不同的發行版可以公用bootfs。

最大的乙個好處就是 - 共享資源

比如:有多個映象都從相同的 base 映象構建而來,那麼宿主機只需在磁碟上儲存乙份base映象,

同時記憶體中也只需載入乙份 base 映象,就可以為所有容器服務了。而且映象的每一層都可以被共享。

docker映象都是唯讀的

當容器啟動時,乙個新的可寫的映象被載入到映象層的頂部。

這一層通常被叫做容器層,容器層之下的都叫映象層

當映象執行之後可以修改容器裡面的內容,再提交成乙個新的映象

docker commit -m='新的映象的描述資訊' -a='作者' 容器id 要建立的目標映象名:[標籤名]
docker run -it -p 8080:8080 tomcat 

p 主機埠:容器埠

p 隨機分配埠

i 互動

t 終端

從上面可以看出docs是可以訪問的哦

重新整理頁面docs不存在了哦

語法

docker commit -a='作者' -m='映象描述'  容器id  新的映象名/名稱:版本
案列

刪除所有容器

docker rm -f $(docker ps -aq)

啟動之前的映象

docker run -d -p 8888:8080 映象id或倉庫id+版本

啟動自己的映象

docker run -d -p 9999:8080 映象id

docker系列教程之docker安裝

2013年發布至今,docker 一直廣受矚目,被認為可能會改變軟體行業。一 環境配置的難題 軟體開發最大的麻煩事之一,就是環境配置。使用者計算機的環境都不相同,你怎麼知道自家的軟體,能在那些機器跑起來?使用者必須保證兩件事 作業系統的設定,各種庫和元件的安裝。只有它們都正確,軟體才能執行。舉例來說...

Docker系列教程14 Docker資料持久化

原文 容器中資料持久化主要有兩種方式 資料卷是乙個可供乙個或多個容器使用的特殊目錄,可以繞過ufs unix file system 注意 資料卷的使用,類似於 linux 下對目錄或檔案進行 mount。示例 docker run name nginx data v mydir nginx執行如下...

Docker系列教程02 Docker安裝

1,官網 2,倉庫 docker支援以下的centos版本 centos 7 64 bit 推薦使用7 預設的是7 centos 6.5 64 bit 或更高的版本 目前,centos 僅發行版本中的核心支援 docker。docker 執行在 centos 7 上,要求系統為64位 系統核心版本為...