docker 架構 (檔案系統, 層, 容器)
阿新 • • 發佈:2019-01-02
按照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,供後續使用。