Docker為何需要OS的基礎鏡像?


原文:https://blog.csdn.net/krismile__qh/article/details/99883273

所有docker容器都是使用的宿主機的OS。這一點和Virtual Machine會虛擬化出Guest OS完全不同。你可以試一下,假設你的

宿主機是Ubuntu 16.04的,內核版本是4.9。不管你運行哪個版本的ubuntu/cent OS容器,看內核版本都是4.9。


共用Host OS是docker的特點!

相比Virtual Machine的虛擬化,Docker更輕,更小(畢竟不用再啟動一套內核了嘛)

但當然也有限制,比如Virtual Machine可以 Windown on Linux或者相反,而Docker是不行的。


問題一,Container內需不需要OS?
Container不是一個VM技術,所以和OS沒有關系。Container指的是Docker Run出的運行環境,因為在里面我們可以運行一些命令,

讓使用者以為它就是一個完整的OS環境,這是不對的。其實Docker只是一個進程。當你使用docker exec登錄進去的也只是一個

Terminal的模擬環境。它不是真實的OS。正因為它不是OS,所以它是直接調用主機的Kernel的。而Container本身只是一個系統進程。


第二個問題:為何需要OS的基礎鏡像?
首先,OS的問題上面已經解釋過了,它不是一個OS,但為何需要OS的基礎鏡像?其實這里的基礎鏡像是一個包含rootfs的鏡像。

Kernel啟動后是需要把啟動文件解壓到rootfs上的,然后kernel找到init文件啟動就可以得到一個Linux環境了,Docker做的事情就

是模擬這個過程,讓kernel給出一個獨立的隔離環境。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM