一直以來我都是使用docker命令pull映象,那如果我們要製作自己的映象檔案呢?這就需要我們研究下docker image的內部結構
核心空間是 kernel,linux 剛啟動時會載入 bootfs 檔案系統,之後 bootfs 會被解除安裝掉。
使用者空間的檔案系統是 rootfs,包含我們熟悉的 /dev, /proc, /bin 等目錄。
對於 base 映象來說,底層直接用 host 的 kernel,自己只需要提供 rootfs 就行了。
而對於乙個精簡的 os,rootfs 可以很小,只需要包括最基本的命令、工具和程式庫就可以了。相比其他 linux 發行版,centos 的 rootfs 已經算臃腫的了,alpine 還不到 10mb。
我們平時安裝的 centos 除了 rootfs 還會選裝很多軟體、服務、圖形桌面等,需要好幾個 gb 就不足為奇了
要構建乙個映象需要知道映象檔案等資訊,一般我們開發程式的時候通常使用檔案記載這類資訊,同樣在docker中構建乙個映象相關的資訊記錄到乙個叫dockerfile的檔案中,那我們看一下centos的dockerfile
第二行 add 指令新增到映象的 tar 包就是 centos 7 的 rootfs。在製作映象時,這個 tar 包會自動解壓到 / 目錄下,生成 /dev, /porc, /bin 等目錄。
注:可在 docker hub 的映象描述頁面中檢視 dockerfile 。
不同 linux 發行版的區別主要就是 rootfs。
比如 ubuntu 14.04 使用 upstart 管理服務,apt 管理軟體包;而 centos 7 使用 systemd 和 yum。這些都是使用者空間上的區別,linux kernel 差別不大。
所以 docker 可以同時支援多種 linux 映象,模擬出多種作業系統環境
MongoDB內部結構分析
對於大多數的mongodb的使用者來說,mongodb就像是乙個大黑盒但是如果你能夠了解到mongodb內部一些構造的話,將有利於你更好地理解和使用mongodb。bson 在mongodb中,文件是對資料的抽象,它被使用在client端和server端的互動中。所有的client端 各種語言的dr...
HBase內部結構
table表 就是有乙個或者多個列族組成,加上之前的 使用,這個表概念應該很熟了 row行 乙個行包括了多個列,這些列通過列族來分類 column family列族 列族是多個列的集合,hbase會盡量的將乙個列族的列放入同乙個伺服器內,這樣可以提高訪問效能,並且可以批量管理有關聯的一堆列,所有的資...
Oracle檢視內部結構
1 分析資料檔案塊,轉儲資料檔案n的塊m alter system dump datafile n block m 2 分析日誌檔案 alter system dump logfile logfilename 3 分析控制檔案的內容 alter session set events immediat...