原文: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給出一個獨立的隔離環境。
