相信你們對於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 progress. This 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\dockerfile:this
四、 使用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列表):
一、 在不一樣平臺的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月份的最新腳本):
一、 映射端口沒法生效,好比上述例子用了8001映射Container的80端口,然而8001端口並無生效。
二、 映射端口並不會出如今docker ps中(能夠用Get-NetNatStaticMapping):
三、 進入部分docker container中運行命令常常出現卡死狀況(命令沒法跳到下一行),好比打開某些文本文件時:
四、 目前windows container的Container名字仍是大小寫敏感的(這點跟linux版無異,不知道算不算bug)
最近聽了臺灣的MS專家馮立偉老師關於Windows Container的課後,更加印證了我以前的想法,未來的架構極有多是
固然一切還得等Hyper-V Container出來,讓咱們一塊兒期待。
因爲最近博主正在爲自家公司部署VMCloud Plus版本,因此更新週期變長了,可是,只要發現新奇玩意兒,博主都會不斷去實踐,即便進度很慢,即便困難不少,也會堅持完成,藉此來感謝各位的關注:)
職場巔峯之路(已更新)
VMCloud-OPC