傳統linux系統與Docker鏡像區別

典型的Linux文件系統

9774376-05936c78d45ff26f
image

​ 典型的Linux文件系統由bootfs與rootfs兩部分組成,bootfs(boot file system)主要包含bootloader和kernel,bootloader主要是引導加載kernel,當kernel被加載到內存中後bootfs就被unmount。

內核啓動後開啓的三個進程

​ 內核啓動後會開啓三個進程,分別是:

  • 進程0(idle進程),空閒進程,也就是死循環。

  • 進程1(init進程),掛載根文件系統,並執行Linuxrc這個應用程序從內核態轉爲用戶態開啓用戶態的進程(init進程),逐步開啓其他進程。

  • 進程2(kthreadd進程)linux內核的守護進程,負責提供操作系統的核心功能(進程調度、內存管理、設備管理、文件系統)的實現

Rootfs的作用

根文件系統(rootfs)的作用:

  1. init進程的應用程序(Linux)在根文件系統上
  2. 根文件系統提供了根目錄/
  3. 內核啓動後的應用程序配置(etc目錄)在根文件系統上。
  4. shell命令程序在根文件系統上。
  5. /lib目錄下的庫文件等

傳統linux系統

​ 傳統的Linux加載bootfs時會先將rootfs設爲read-only,然後在系統自檢之後將rootfs從read-only改爲read-write,然後就可以在rootfs上進行寫和讀的操作。

Docker鏡像

​ Docker鏡像,它在bootfs自檢完畢之後並不會把rootfs的read-only改爲read-write。而是利用union mount(Union FS的一種掛載機制)將一個或多個的rootfs加載到之前的read-only的rootfs層之上。 在加載了這麼多層的rootfs之後,仍然讓它看起來只像是個文件系統,在Docker的體系裏把union mount的這些read-only的rootfs叫做docker的鏡像。此時的每一層rootfs都是read-only的,不能對其進行操作。當創建一個容器時,也就是將Docker鏡像進行實例化,系統會在一層或是多層read-only的rootfs之上分配一層空的read-write的rootfs

​ Docker容器共享宿主機內核,一個內核可對應多個操作系統版本。如果服務對系統內核沒有要求,可以通過對服務Docker化來解決部署煩惱,Docker化的服務可移植性更高、使用更快捷。如果想學習更多的Docker知識,可以關注微信公衆號:WEL測試

9774376-1c225b717c974cdb.jpg
image

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