關於Docker你不知道的事——虛擬化歷史
(提示:對Docker感興趣的朋友可以加我的微信:ghostcloud2016,我會把您加到我們的一個Docker愛好者微信群中,在這個群中,有來自五湖四海的Docker愛好者,我們共同交流,共同學習!)
整個虛擬化技術的發展有超過半個世紀的歷史。虛擬化一般分為硬體級虛擬化(hardware-level-virtualization)和作業系統級虛擬化(os-level-virtualization)。硬體級虛擬化是執行在硬體之上的虛擬化技術,它的管理軟體也就是我們通常說的hypervisor或者virtual machine monitor,它需要模擬的就是一個完整的作業系統,也就是我們通常所說的基於Hyper-V的虛擬化技術,VMWare, Xen, VirtualBox,亞馬遜AWS和阿里雲都是用的這種技術。作業系統級虛擬化是執行在作業系統之上的,它模擬的是執行在作業系統上的多個不同程式,並將其封裝在一個密閉的容器裡面,也稱為容器化技術。Docker正是容器虛擬化中目前最流行的一種實現。
硬體級虛擬化的歷史
- 19世紀60年代:美國出現了第一個虛擬化系統,它是由IBM開發的CP-40 Mainframes系統,雖然這個系統只是在實驗室使用,但卻為後來的CP-67系統奠定了基礎。在那個時代,虛擬化系統主要由通用,貝爾實驗室和IBM主導研發。
- 1987年:一個非常牛逼的公司Insignia Solutions演示了一個稱為SoftPC的軟體模擬器,這個模擬器允許使用者在Unix Workstations上執行DOS應用。在此之前這是不可能辦到的,當時一個可以執行MS DOS的個人電腦需要1,500美金,而通過SoftPC模擬之後,可降低到500美金。可以看出,當時的需求就是在大型工作站上執行微軟的DOS。到了1989年的時候,Insignia Solutions釋出了Mac版的SoftPC,使蘋果使用者不僅能執行DOS,還能執行Windows作業系統。
- 1997年:隨著SoftPC的一炮而紅,其他虛擬化公司如雨後春筍般的出現了。在1997年,蘋果開發了Virtual PC,後來又賣給了Connectix。
- 1998年:真正的王者VMWare出現了,他們在1999年開始銷售VMWare workstation,也就是我們很多人使用過得桌面版的虛擬機器。
- 2001年:VMWare又發行了ESX和GSX,也就是我們現在經常使用的ESX-i的前身。
- 2003年:之前所說的Connectix被微軟收購,後續推出了Microsoft Virual PC,再之後就沒什麼音訊了。同年VMWare也被EMC收購,成為EMC迄今最成功的一筆收購。就在這一年,一個開源的虛擬化專案Xen啟動了,並在2007年被Citrix收購。
總結:看了這個歷史,不禁內心發出感嘆。Insignia Solutions的衰敗,Connectix的沒落,以及VMWare的半路殺出,都說明了商業和科技的競爭是不間斷的,就像是一場長跑,一開始領先的,往往並不是最後的勝利者,你不進步,就肯定會被超越。
作業系統級虛擬化的歷史
- 1982年:你一定會很驚訝,第一個作業系統級的虛擬化技術是什麼。答案就是chroot,直到現在我們依然在使用的一個系統呼叫。這個系統呼叫會改變執行程式的工作目錄,並且只能在這個目錄裡面工作。這種操作其實就是一種檔案系統層的隔離。
- 2000年:FreeBSD jail,真正意義上的第一個功能完整的作業系統級虛擬化技術。所以,真正的容器化技術出現到現在已經過去了16年,並不是幾年的時間。
- 2005年:OpenVZ,這是linux平臺上的容器化技術實現,同時也是LXC,即docker最初使用的容器技術核心實現。
- 2008年:LXC釋出,這是docker最初使用的具體核心功能實現。
- 2013年:Docker釋出,可以看出,docker最初是使用了LXC,同時封裝了其他的一些功能。Docker的成功,與其說是技術的創新,還不如說是一次組合式的創新。
總結:曾經聽一位老大說過,iPhone你要說有多創新,真的說不上。手機很早就有了,電腦很早就有,觸控式螢幕很早就有,但是蘋果將所有這些有機的組合到了一起,再提供極致的使用者體驗,就產生跨時代的產品。同樣Docker所使用的技術也都不是新技術,它將這一系列技術有機的組合到一起,並提供極致的使用者體驗,就產生了垮時代意義的產品。
相關文章
- 關於javascript你不得不知道歷史JavaScript
- 關於Java序列化你不知道的事Java
- 你所不知道的虛擬化和雲端計算
- 關於 Git 你所不知道的一些事Git
- 說透 Docker:虛擬化Docker
- 關於檔案傳輸協議,你不知道的事協議
- 關於 Google 你可能還不知道的26個事實Go
- 關於執行緒池,那些你還不知道的事執行緒
- 關於Java你不知道的那些事之Java8新特性[HashMap優化]JavaHashMap優化
- 關於JavaScript物件,你所不知道的事(一)- 先談物件JavaScript物件
- 關於微服務架構,你不得不知道的事微服務架構
- 關於JavaScript陣列,你所不知道的3件事JavaScript陣列
- 關於CSS Reset那些事(1):歷史演變與Normalize.cssCSSORM
- 關於區塊鏈虛擬貨幣世界中‘穩定貨幣’的歷史、機理、種類及展望區塊鏈
- 關於JavaScript物件,你所不知道的事(二)- 再說屬性JavaScript物件
- 關於資料安全風險評估,你不知道的這些事!
- 關於軟體開發,你老闆不知道的7件事
- 關於MongoDB,你可能不知道的十件事MongoDB
- 關於 Git 和 Github 你不知道的十件事Github
- 『現學現忘』Docker相關概念 — 4、虛擬化概念Docker
- 關於虛擬機器重啟後docker的Mysql無法相連的措施虛擬機DockerMySql
- 關於虛擬機器的使用虛擬機
- 關於虛擬化技術的幾個問題薦
- 關於CSS Reset 那些事(一)之 歷史演變與Normalize.cssCSSORM
- 【Bugly乾貨】關於 Android N 那些你不知道的事兒Android
- 關於webpack優化,你需要知道的事(上篇)Web優化
- 關於伺服器虛擬化知識十二問伺服器
- 關於 Java 你不知道的 10 件事Java
- 關於面試你不知道的幾點面試
- RHEL7 Docker 虛擬化使用(二)Docker
- RHEL7 Docker 虛擬化使用(一)Docker
- Docker技術( 容器虛擬化技術 )Docker
- 徹底釋放虛擬化,Docker的應用Docker
- 關於openGauss中的虛擬索引索引
- kvm虛擬化關閉虛擬網路卡virbr0的方法
- 虛擬化的發展歷程和實現方式
- 虛擬化技術的發展歷程簡述
- Docker虛擬化管理:30分鐘教你學會用DockerDocker