問題分析

聽說Windows支持原生docker了,大家一定都很興奮。然而,大家想過沒有,Windows Server Docker最適合什么場景呢?部署.NET Core應(yīng)用?為什么不選擇Linux下的docker?正常的決策者腦袋被門擠了才會花錢額外買Windows Server的license,用來部署.NET Core吧?所以,在本人看來,Windows Server Docker最大的價(jià)值,還是在于部署傳統(tǒng)基于WindowsServerCore的應(yīng)用。這樣的應(yīng)用一般有兩大類,一類是基于iis的網(wǎng)站應(yīng)用;另一類是Windows Service。本文主要關(guān)注基于iis的應(yīng)用的docker部署。

那么,部署一個iis應(yīng)用到docker,是不是只要起一個iis的docker容器實(shí)例,遠(yuǎn)程連接,并且,copy文件進(jìn)去,能通過容器內(nèi)的iis訪問就行了?如果,有人問這樣的問題,那么,說明他還完全沒有容器的思維。上面說的這個,其實(shí)就成了將容器當(dāng)虛擬機(jī)用了,這將極大地限制了docker原有的靈活擴(kuò)展能力。因此,可以說是使用Windows docker最糟糕的姿勢之一了。

要正確部署一個iis應(yīng)用到Windows Server Docker,并不是表面那么簡單。限于篇幅,并且為了更專注,本文先不涉及容器編排、負(fù)載均衡、images的構(gòu)建和管理等問題(這些要考慮的問題還有很多,以后我們單獨(dú)聊),這里只關(guān)注如何將一個基于iis的應(yīng)用正確運(yùn)行于單個Windows Server Docker實(shí)例中。即便如此,一般至少也要解決下面這些問題:

  • Dockerfile:如何通過Dockerfile部署應(yīng)用文件和設(shè)置操作系統(tǒng)和IIS配置,如何為不同的運(yùn)行環(huán)境(開發(fā),測試,生產(chǎn))配置不同參數(shù);

  • 查看系統(tǒng)日志:典型的系統(tǒng)日志包含IIS Logs、Windows Event Log和應(yīng)用的異常日志;

  • 重啟容器實(shí)例:當(dāng)容器實(shí)例重啟時(shí),如何保證被部署的應(yīng)用能保持之前的工作狀態(tài),能繼續(xù)服務(wù);

  • 網(wǎng)絡(luò)路由:包括容器內(nèi)部如何訪問外部系統(tǒng)、docker宿主機(jī)如何訪問容器內(nèi)部、外部系統(tǒng)如何訪問容器內(nèi)部;

應(yīng)用示例

網(wǎng)友評論