初窺Windows Server Container

前言

          相信你們對於Docker這項技術都有必定了解了,Container是一種輕量級的解決方案,很是適合將傳統windows平臺上的無狀態服務遷移上去(相對於VM虛擬化更加可以提升總體資源利用率),加上微軟的大部分技術架構都是能夠整合的,而採用linux下的docker整合起來效果並非特別好(好比我曾經嘗試着用scom監控linux下Container,雖然成功了可是效果並非很好),因此對於Windows平臺的Docker我就更加期待了。今天我就把近一段時間一直零零散散作的一些小demo來作個彙總。 linux

(圖爲微軟Container示意圖)nginx

在開始以前,先囉嗦幾句:docker

因爲目前Windows Container仍處於TP3階段(技術預覽),因此存在Bug是正常的,如下是官方的原話:windows

Remember, this is a preview there are bugs and we have a lot of work in progressThis page contains many of our known issues.Be aware that there are some known Docker commands that don't work and some that only partially work架構

簡單翻譯下,其實就是一句話:「沒有Bug纔不正常呢」,因此千萬別在生產環境試水Windows Container(至少等到發佈)app

實驗部分

        今天這個實驗的目錄是經過Windows Container建立一個Nginx Container(至於爲何不建立IIS Container,後面有講述),僅做實驗參考。ide


一、  新建Windows Server Container:測試


                                          

二、  輸入相關配置信息後建立完成,注意咱們這裏先映射出8001端口做爲測試端口用:ui


三、  建立完成後,鏈接到Docker Host上,使用wget -uri 'http://nginx.org/download/nginx-1.9.3.zip' -OutFile "c:\nginx-1.9.3.zip"獲取源碼nginx部署包,而後建立Dockerfile,new-item -Type File c:\docker\nginx\dockerfilethis


四、  使用Expand-Archive -Path C:\nginx-1.9.3.zip -DestinationPath C:\docker\nginx\source –Force將源碼解壓到咱們建立的目錄上,待會兒dockerfile會調用到:


五、  使用notepad.exe c:\docker\nginx\dockerfile開始編寫dockerfile內容:

FROM windowsservercore

LABEL Description="nginx For Windows" Vendor="nginx" Version="1.9.3"

ADD source /nginx


六、  而後使用docker build -t nginx_windows C:\docker\nginx開始使用dockerfile建立nginx p_w_picpaths:


七、  接着咱們就能夠在p_w_picpaths中看到咱們剛剛建立的p_w_picpath:


八、 咱們就可使用docker run -it --name VMC-NGC01 -p 8001:80 nginx_windows cmd調用剛剛建立的p_w_picpaths去建立Container了,建立後以下:


九、  建立完成後是直接會進入Container裏面的,在Container下運行cd c:\nginx\nginx-1.9.3進入nginx主目錄,並使用start nginx啓動服務:


十、 接着咱們訪問下站點頁面,因爲咱們沒有建立主頁,因此訪問爲403(能夠看到我並無使用8001),然而我並無找到好的方法能夠修改到nginx.conf這個文件(請見Bug列表):


關於Windows Container IIS方面的嘗試

一、  在不一樣平臺的Docker上搜索IIS p_w_picpaths:

     a、Windows Container下搜索:


    b、而在Linux Container下搜索IIS是這樣的(雖然多是由於Docker鏡像庫不一樣,不過就算修改了Linux上的鏡像庫,我認爲應該不能正常在Linux Docker上進行運行):

二、 不知道什麼緣由,部署IIS Container1老是失敗的:

    a、使用Images方式建立(在端口映射正確的前提下,雖然成功建立,且Container中的iis服務正常,而且還手動建立了IIS站點並開啓,仍然沒法訪問):

   

 b、即便是使用微軟GitHub上的DockerFile+PowerShell腳本建立,仍然是有問題的(採用了最新版本的TP3 Container及10月份的最新腳本):


 

關於TP版目前存在的疑似Bug

一、  映射端口沒法生效,好比上述例子用了8001映射Container的80端口,然而8001端口並無生效。     


二、  映射端口並不會出如今docker ps中(能夠用Get-NetNatStaticMapping):


三、  進入部分docker container中運行命令常常出現卡死狀況(命令沒法跳到下一行),好比打開某些文本文件時:


四、  目前windows container的Container名字仍是大小寫敏感的(這點跟linux版無異,不知道算不算bug)

結語

    最近聽了臺灣的MS專家馮立偉老師關於Windows Container的課後,更加印證了我以前的想法,未來的架構極有多是

     固然一切還得等Hyper-V Container出來,讓咱們一塊兒期待。

    因爲最近博主正在爲自家公司部署VMCloud Plus版本,因此更新週期變長了,可是,只要發現新奇玩意兒,博主都會不斷去實踐,即便進度很慢,即便困難不少,也會堅持完成,藉此來感謝各位的關注:)





職場巔峯之路(已更新)

http://mp.weixin.qq.com/s?__biz=MzAxNzIxNDA2OQ==&mid=208028889&idx=1&sn=a6cff33094b29329fd6c364272df66cc&scene=18#rd

VMCloud-OPC

http://vmcloud.com.cn

080515_0626_VMCloud4.png

相關文章
相關標籤/搜索