1. 程式人生 > >docker 架構 (檔案系統, 層, 容器)

docker 架構 (檔案系統, 層, 容器)

按照docker官網上的說法,docker的檔案系統分為兩層:bootfs和rootfs


bootfs包含了bootloader和linux核心。使用者是不能對這層作任何修改的。在核心啟動之後,bootfs實際上會unmount掉。

rootfs則包含了一般系統上的常見目錄結構,類似於/dev, /proc, /bin等等以及一些基本的檔案和命令。

上圖中,aufs (advanced multi layered unification filesystem),是一種可堆疊的檔案系統。

對於linux上不同版本的問題,docker可以同時執行多個rootfs.


Docker的檔案系統是分層的,它的rootfs在mount之後會轉為只讀模式。 Docker在它上面新增一個新的檔案系統,來達成它的只讀。

事實上,從下圖中,我們能看到多個只讀的檔案系統,Docker中把他們稱為 層。

image是隻讀的,container部分則是可寫的。

如果使用者想要修改底層只讀層上的檔案,這個檔案就會被先拷貝到上層,修改後駐留在上層,並遮蔽原有的下層檔案。


最後一部分是容器(container), 容器是可讀寫的。

在系統啟動時,Docker會首先一層一層的載入image,直到最先面的base image。而這些image都是隻讀的。

最後,在最上層新增可讀寫的一個容器, 這裡存放著諸如unique id,網路配置之類的資訊。

既然是可讀寫的,就會有狀態。容器共有兩種狀態:running 和 exited.

使用者也可以用docker commit 命令將一個容器壓制為image,供後續使用。