[前言] 盆盆期待和大家分享年初在北京Microsoft MVP OpenDay上分享的講座錄像,介紹有關微軟雲計算、Docker和微信自動化聯動的技術。在這篇文章裏,還將介紹盆盆自己對Windows自己的Docker技術的猜想和展望。
首先要給大家分享一個盆盆在MVP Open Day上的講課錄像。
1月底盆盆去北京參加MVP的兩會,當時天可真藍。
和張誠、蘇繁等兄弟一起晚餐。
晚宴上,還有多才多藝的MVP兄弟表演節目哩
第二天是週六,在王府井的一家酒店開講座,上座率不低哈。
講座視頻
前天盆盆拿到了講課的錄像,大該1小時,錄像效果較一般,大家湊合着看吧(注意有聲音,請帶耳機收看,以免影響他人哈)。
您可以訪問以下的視頻鏈接:
http://v.youku.com/v_show/id_XOTE0NTQyODY0.html
這個講座主要講什麼呢,是和Azure雲計算和自動化相關,其中涉及的一些知識點,您可以參考微信公衆號華來四里的兩篇文章(關注:sysinternal):
在華來四公衆號裏回覆docker1,閱讀有趣的Windows Azure Docker演示
在華來四公衆號裏回覆azure1,閱讀雲計算和自動化
Docker原理
說到Docker,今天從team內部獲悉,微軟會推出超輕量級的Windows Nano Server,作爲今後Windows Docker的底層OS,這就類似於開源社區正在推的CoreOS、輕量級Ubuntu一樣。
聯想到Linux Docker容器技術使用的六大Linux內核隔離技術:UTS/IPC/PID/Network/Mount/User。這樣進程等於在外面包了一層獨立的賬戶、主機名、進程號、網絡、進程間通信和文件系統等命名空間的殼,簡直等於一臺輕量級的小型虛擬機!
這裏推薦大家閱讀DaoCloud的大牛孫老師的雄文《Docker背後的內核知識—Namespace資源隔離》(您需要複製以下地址,並粘貼到瀏覽器裏查看):
其實Windows很早就有進程隔離技術,例如大家都很熟悉的終端服務(最早由Citrix研發)。終端服務實現所謂的會話隔離機制。其實質就是將 \DosDevices、\Windows和\BaseNamedObjects等幾個對象的命名空間做隔離,這和Docker的IPC隔離有幾分類似的地方。
看盆盆利用WinObj在Windows 10裏抓的截圖。終端服務通過構造新的窗口站命名空間(附圖中的Windows部分),來隔離不同用戶所看到的桌面;通過隔離的\BaseNamedObjects命名空間,則可以隔離(也叫做實例化)出自己的共享對象(例如內存段、Mutex和事件)。
有關終端服務的這部分原理,可以參考《Windows Internals》第173頁。不過書裏面並沒有提到附圖中看到的AppContainerNamedObjects。這是什麼東東?
原來這是Windows 8以後纔有的應用程序容器技術(Windows Internals主要以Windows 7爲主),主要是給Metro UI應用所使用。有關這個應用容器技術,可以參考以下的文章:
http://recxltd.blogspot.com/2012/03/windows-8-app-container-security-notes.html
盆盆感興趣的是以下的一段論述。
其中有以下的一段話,大意是在權限、IC、文件訪問和網絡訪問訪問進行隔離,是不是和Docker的六大隔離有點類似??
Distilling this down they've introduced a high-level capability model that translates to a more restricted version of low integrity processes. Going further than before in restricting IPC between processes, file access and event loopback network access.
能否大膽猜測一下,微軟會不會將其原本基於MetroUI的App Container技術,加工擴展爲Windows版本的Docker?
想當年Citrix開發出終端服務,後來微軟在1998年時正式授權到Windows NT的終端服務版(那一年盆盆剛工作)。Citrix自己再對其進行深加工,成就了XenDesktop和XenApp,到現在已經風光了17年。回想起來,其盈利模式是對每個終端連接進行收費,增值的部分至少有兩點:終端連接的協議,以及管理平臺。
那麼Docker呢? 在Windows上會依賴何種模式盈利?Partner的贏利點在哪裏?和原來的虛擬化技術如何整合?留給我們的問題太多了。