自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

【漲知識】十個問題迅速了解Windows Docker

云計算
微軟在5月份Build大會上的官方說法,說是這個夏天會放出Windows Server Container的測試版。也就是說,目前我們還無法看到Windows Docker的測試版本,無法直接上手測試。接下來我就大家關心的十大問題進行介紹。

微軟在5月份Build大會上的官方說法,說是這個夏天會放出Windows Server Container的測試版。也就是說,目前我們還無法看到Windows Docker的測試版本,無法直接上手測試。接下來我就大家關心的十大問題進行介紹:

1. Windows Docker和Hyper-V有啥區(qū)別?

Hyper-V和VMware/Xen/KVM等類似,都是硬件虛擬化,安全但笨重。

Windows Docker是OS虛擬化技術,具備一定的隔離能力,性能更好、容易移植。

兩者不是互相取代的關系。

注意:Windows Docker并不是我們在Docker 1.6時見到的Windows Docker Client,也不是Boot2docker這個Windows下的linux虛擬機,而是真正的Windows版本的Docker。其實其正式名稱并不叫Docker,而是叫做Windows Server Container,還有Hyper-V Container,有2個產品,其中Windows Server Container類似于linux Docker,而Hyper-V Container有些類似于clear linux或者Hyper Docker。

這是因為Docker是商標名稱,微軟不能直接拿來使用。

2. Windows Docker和Softgrid(APP-V)/Thinstall等有啥區(qū)別?

Docker是OS虛擬化,主要場景是服務端應用,這些容器(應用)之間通過標準的網絡接口進行通信,好像虛擬機一樣。

Softgrid是應用程序虛擬化,主要用于客戶端應用部署。例如Office,這些應用在同一個會話里運行,完全就是傳統(tǒng)的應用,彼此之 間可以進行進程間通信,例如Word可以OLE調用Excel的表單等等。不同的進程,看到的文件系統(tǒng)不會隔離。適用于批量部署客戶端應用。

3. 容器和沙盒是什么關系?

曾經看到一句很棒的評語,必須分享給諸位:

Sandboxing is focused on just security with code isolation. Containers have some security code isolation, but this is not the only or primary purpose. One way to think about containers is as a layered/quarantined filesystem which makes it quick/easy/lightweight to run an application and also makes the application (in the container) very portable.

從下圖中我們可以看出,在Windows 10里,IE的繼任者Edge瀏覽器就采用了沙盒技術。

十個問題帶你迅速了解Windows Docker

 

十個問題帶你迅速了解Windows Docker

同樣在保護模式下運行的Office文檔,也運行在 沙盒里。如下圖所示。

 


而容器,則還必須要在移動能力上有所考量,確保讓應用,也能變成按需遞交的動態(tài)服務。以前的硬件虛擬化,能將OS、App等變成文檔,從而把服務器資源變成按需遞交的服務,現在Windows Docker和linux一樣,也能變成image,變成文檔,變成按需遞交的動態(tài)服務。

4. Windows Docker和其他OS虛擬化工具之間是什么關系,例如很早就聽聞的VPS等?

從技術角度看,底層原理大同小異??磮D吧。

 

十個問題帶你迅速了解Windows Docker

Docker和其他OS虛擬化技術一樣,技術實現大致差不多。關鍵看誰能帶動生態(tài)圈,能夠贏得其他廠商的支持。同時Docker的分層文件 系統(tǒng)實現,也是其特別引人入勝的地方。這個截圖的下載地址在這里。

#p#

5. Windows Docker分層文件系統(tǒng)?

先看看Linux的實現。DaoCloud的大牛孫宏亮老師指出:假設我們下拉了Ubuntu:14.04映像,并通過命令docker run –it ubuntu:14.04 /bin/bash將其啟動運行。則Docker為其創(chuàng)建的rootfs以及容器可讀寫的文件系統(tǒng)。參考這張截圖

 

十個問題帶你迅速了解Windows Docker

從容器的視角來看,雖然只有一個邏輯的完整文件系統(tǒng),但該文件系統(tǒng)由“2層”組成,分別為讀寫文件系統(tǒng)和只讀文件系統(tǒng)。孫老師的雄文鏈接在此。

Windows Docker采用類似的分層文件系統(tǒng)。參考下圖。

 

十個問題帶你迅速了解Windows Docker

Windows Docker采用NTFS文件系統(tǒng)的重解析點技術(reparse point),頂層的沙盒層(sandbox layer)是可讀寫的,只允許該容器自己占用,而其他層 則是只讀的。在這張圖中,底層的基礎OS層和中間的應用程序框架層都是只讀的,而頂層的沙盒層則可讀寫,在 容器的視角看來,它獨占了完整的文件系統(tǒng)。

這有點類似于Hyper-V的差異磁盤鏈(頂部的子盤才能讀寫,其上方的所有父盤和Base盤都是只讀的)。

Windows Docker的分層文件系統(tǒng),我是將其理解為類似符號鏈接(僅僅用來幫助理解,不要真的輕信),當頂層的沙盒層打開文件時, 相當于打開一個符號鏈接,而嘗試修改時,則COW(Copy on write)。到底采用什么底層文件系統(tǒng)技術,如何實現多個容器并發(fā)訪問只 讀Layer文件的性能,如何cache等,目前一概不知道。sorry!

6. Windows Docker的文件系統(tǒng)隔離

十個問題帶你迅速了解Windows Docker

前段時間的熱門話題,除了股票,就要算是某在線旅游商的悲劇了,坊間甚至傳聞其為數據誤刪!!!

有客戶曾經問到:Docker能否避免這種悲劇?其實Docker和虛擬機一樣,都替代不了容災和備份的機制。不過Docker確實有文件系統(tǒng)隔離 的能力。我在Build大會里看到,演示者在Windows Container里執(zhí)行刪除C盤根目錄下所有文件和注冊表鍵值,盡管這個容器被毀了 ,但是根本不會影響其他容器,更不會影響主機,這和linux Docker一樣??磮D片吧。

 


7. IPC隔離機制

在另一位孫老師,孫建波老師的文章里我們看到,linux Docker采用了IPC隔離機制。而Windows Docker也采用類似的隔離機制。這個機制就是所謂的會話隔離。

那么Windows里,哪些技術會用到會話隔離呢,盆盆簡單總結一下:

首先是終端服務,會話就是為了這個技術而發(fā)明的。

  • 快速用戶切換,這和終端服務實際上是一樣,只不過快速用戶切換只會提供最新登錄用戶的桌面(shell)。
  • 從Windows Vista開始,系統(tǒng)級進程和服務,運行在會話0里,這就是為什么我們無法再用"mstsc /console"命令來登錄到服務器的控制臺會話。
  • 從Windows 8開始,Metro Application(平板專用的應用),也采用會話隔離技術。

也就是說,會話是為了終端服務這種多用戶機制來準備的。

用Sysinternals Suite工具包里的Winobj這個小工具,可以看到會話隔離的效果。

 

十個問題帶你迅速了解Windows Docker

在圖中可以看到,不同會話里擁有不同的對象命名空間,例如不同容器,有自己獨立的窗口站(終端服務,其他場合只有當前登錄用 戶才有Winsta窗口站),BaseNamedObjects目錄,包含事件、互斥信號和內存段等對象。不同會話里的應用,不能夠發(fā)送窗口消息(Window Message,以防止粉碎攻擊)。

Windows Docker沿用了會話隔離技術,不同容器在同一個Windows主機上訪問同一個命名對象,就不會導致沖突。

在Build大會的演示里,啟動了2個容器,都是從同一個Windows Server Core映像里創(chuàng)建出來。在其中一個容器里運行tasklist命令, 顯示當前的進程信息,包括會話。

十個問題帶你迅速了解Windows Docker

在這個截圖中,我們可以看到該容器運行在會話14里。

在另外一個容器里同樣運行tasklist。可以看到該容器運行在會話15里。

 

十個問題帶你迅速了解Windows Docker

類似于兩個容器,分別通過遠程桌面訪問一樣,拿到不同的會話(session),從而獲得namespace隔離能力。

從兩個截圖里能看到什么?其中System和空閑進程是共享的,這說明Docker是共享宿主機的內核。當然進程號都一樣不代表什么,因 為所有Windows里,這兩個進程的PID都一樣!而每個容器都有自己的svchost進程、csrss進程和wininit進程等。這些進程都是 per-session的。

#p#

8. Windows Docker能顯示圖形化界面嗎?

傳統(tǒng)的Windows應用大多是有GUI的,所以這些應用可能需要通過圖形化方式進行遠程操控。Windows Docker會通過容器的RDP服務連 接上來。

十個問題帶你迅速了解Windows Docker

圖中顯示通過RDP服務連接到Process Explorer這個帶GUI的系統(tǒng)進程管理工具。由于RDP實際上就是終端服務,所以Process Explorer這個圖形化進程相當于又運行在一個新的會話里了!這個說起來有點拗口。

十個問題帶你迅速了解Windows Docker

從這張圖里我們可以看出,由于Process Explorer是在終端會話里打開的,所以我們可以在容器的任務管理器里看到有兩個會話:

會話14是Docker自己的會話,在這里嘗試啟動Process Exploer,但是啥都看不到,這個是正常的,因為圖形化界面無法在Docker客戶端 里顯示,Linux也采用類似VNC/RDP等辦法開專門的通道訪問。

而會話15則是通過RDP訪問的會話

9. 創(chuàng)建Windows Docker

和linux Docker,Windows Docker(記住有兩個產品,Windows server container和hyper-v container)完全支持linux Docker的接口和工具集。就好比電視機和投影儀,其內部實現固然大相徑庭,然其和電腦的之間的接口則幾乎完全一致。

創(chuàng)建Windows 容器,和linux一樣,有Docker file,直接Docker build,生成Image。

Docker File的簡單范例:

 

  1. From Windowsservercore  
  2. WORKDIR \ 
  3. COPY bin\Debug\ \Deapp  
  4. CMD \DemoApp\Demoapp.exe 

今后微軟的Windows azure云,可以直接支持Docker,不管是Windows還是linux,都可以直接用最新的visual studio把代碼簽到azure的linux或者Windows容器里。當然也可以直接用azure的visual studio online服務。

10. Windows Docker不同版本,以及l(fā)inux之間異同

首先分享靈雀云老大左玥老師的PPT。

 

十個問題帶你迅速了解Windows Docker

可以看到session和JO,是Windows Docker的隔離技術,同時JO技術類似于linux里的CGroup。可以參考chrome的相關技術。chrome就是用到了不少Windows的隔離技術。

再看一張圖片。

十個問題帶你迅速了解Windows Docker

從這里可以看出Windows Docker不同版本和linux之間的異同點。其中Hyper-V Container的安全能力高于Windows Server Container。

Windows Server Container和Hyper-V Container之間的差異,可以參考這個圖片。最大的差別在于,hyper-v container支持多租戶安全能力,同時支持加域。而Windows server container則不能加域,這意味著如果這個應用需要加域的話,則無法用Windows Server Container。

 

 

十個問題帶你迅速了解Windows Docker

#p#

Q& A

問: 從前部分看講解的來看,個人覺得Windows Server Docker主要用到的是Dandbox沙盒技術,對嗎?

答:應該說和Linux Docker一樣,既有沙盒技術,又有分層文件系統(tǒng)。

問: Windows也有在容器里面使用的Image了嗎?下載下來之后在liunx的Dockr里面能用起來嗎?linux的Image在Windows Server Docker里面能跑起來嗎?

答:Windows Docker和linux不兼容。不能將linux image放在Windows里運行。因為Docker是共享內核的,兩者實現完全不同。

問:支持GUI嗎?

答: 能支持GUI,就和Linux docker一樣。但是由于Docker Client本身不能支持GUI,所以需要用RDP Client連接。

問:Windows的Docker只是用Windows做基礎的,沒有像linux那樣去抹平不同發(fā)行版的差異?

答: 由于Docker實質是OS虛擬化技術,所以依賴于OS kernel,Windows和Linux互相不兼容。目前的其中一個解決辦法是,從代碼源頭解決,例如同一個代碼,既可以簽入到Windows容器,也可以嵌入到linux容器上(跑Linux版本的.NET)。

問:Win PC上是不是不用再像目前安裝Docker那樣先安裝虛擬機之類的?

答:不是,Windows Docker是原生的Windows版本的Docker機制,和linux Docker等價,不是采用Boot2Docker這樣的虛擬機。

問:Windows Docker是已經有Windows的image嗎?

答:對,會有Windows sever image,例如我們熟悉的Windows server core,還會有今后的Windows nano server。

問:這些image是不是都不帶GUI?管理起來的話,微軟目前有自己的容器管理平臺了嗎?

答:可以有GUI,但是云端的環(huán)境,傾向于弱化GUI,這就是微軟為什么要推出完全沒有GUI的Windows Nano Server的原因,Nano Server,不但沒有GUI,連Console都沒有,需要通過PowerShell命令行等遠程管理。另外,Windows Docker支持傳統(tǒng)的Linux Docker接口。

問:Windows Docker有哪些比較典型的應用場景么?

答:Windows Docker的典型場景,和Linux幾乎一樣,都是實現應用的動態(tài)服務化,打斷應用和底層硬件設備之間的緊密耦合的紐帶。

問:Windows Docker有哪些比較典型的應用場景么?

答:Windows Docker的典型場景,和Linux幾乎一樣,都是實現應用的動態(tài)服務化,打斷應用和底層硬件設備之間的緊密耦合的紐帶。
 

責任編輯:Ophira 來源: dockone
相關推薦

2010-03-18 13:48:14

Linux新手

2009-06-24 10:45:42

Linux

2022-11-25 14:55:43

JavaScriptweb應用程序

2021-03-11 09:02:37

SQL數據庫數據

2009-04-30 08:58:39

微軟操作系統(tǒng)Windows 7

2010-03-09 17:30:08

Linux新手知識點

2020-07-29 15:01:50

JVMGCJDK

2022-06-12 23:43:19

SQL數據函數

2022-03-22 23:18:55

SQL技術內部概念

2024-05-17 16:18:27

2023-09-06 12:01:07

2025-04-01 08:25:00

OSPF網絡IT

2021-06-03 18:30:27

Linux epoll IO

2023-10-04 00:03:00

SQL數據庫

2013-01-14 10:28:01

微軟Windows SerOS

2023-12-15 10:42:05

2022-11-18 07:34:12

Docker項目目錄

2024-01-03 08:53:35

JavaScrip編程語言NodeJS

2023-12-22 15:32:20

2024-04-19 13:21:55

點贊
收藏

51CTO技術棧公眾號