您好,登錄后才能下訂單哦!
Docker容器化趨勢目前已經進入了快速發展階段,關于Docker容器數據中心級別大規模應用集群及編排管理,應用微服務化都是業界廣泛討論的議題;不過除了上述熱點以外,對于容器化最為開發運維人員推崇的,莫過于DevOps開發測試場景的對應:開發,構建,運行,保證配置運行環境及打包代碼轉移運行的一致性!不過之前多數情況下,我們看到的Docker打包并非開發工具直接集成的,需要開發運維人員手工編寫,現在已經開始逐漸過渡和改觀,對.NET開發者而言Visual Studio 2015 Tools for Docker - August Preview目前在公開預覽階段,已經更新到了0.7 Beta版;目前通過這個工具開發者可以輕松的將開發的ASP.NET 5 Web或控制臺應用代碼構建并發布到運行在Azure公有云中的虛擬機容器中,在通過ASP.NET跨平臺的前提下目前支持Linux或Windows兩種內核虛擬機。當然本人設想的場景是發布到云中的測試環境,如果測試過程沒有問題,之后就可以將同樣的構建程序包和環境配置文件轉交給運維人員進行生產部署。
這么令人興奮的功能,還是讓我們一起體驗一下:
環境準備:
首先顧名思義擴展程序是支持VS 2015的,因此要體驗這個功能沒有升級的還是快快升級一下https://www.visualstudio.com/downloads/download-visual-studio-vs, 目前支持三個版本:
企業版
專業版
社區版
(*目前只支持英文版本,這里要注意目前預覽版還不支持多語言版,所以如果是中文版的VS 2015還是再耐心等等吧)
預覽階段VS Tools for Docker還沒有做好ASP.NET和Web工具依賴關系,本人就在測試中吃了這個虧,沒有注意需要預裝工具包,因此在VS 2015中無法選擇在Azure上創建新的Docker虛擬機,參考了這篇文章才發現了問題所在。
擴展工具的主要功能:
安裝Docker 1.8.1 Windows命令行工具集,如果Windows本地沒有安裝的話VS 2015工具會幫助安裝,借助Docker的工具VS 2015擴展工具才能實現對于Docker容器的管理和部署。
自動生成Azure Docker虛擬機資源模板用于在Azure上創建內置Docker功能的Linux/Windows 虛擬機用于承載Web或控制臺程序。
在當前用戶環境自動生成Docker TLS安全通信及管理證書用于遠程管理Azure端托管的Docker虛擬機環境。
打包應用程序并生成Dockerfile用于構建應用程序基礎映像。
準備環境就緒以后,可以開始進行測試了;
1. 首先創建一個ASP.NET Web應用程序,
2. 接下來,選擇ASP.NET預覽版應用模板,此模板會通過NuGet下載項目所需引用的跨平臺庫DNX,打包配置工具NPM, Bower等,
(*注意此時不要勾選部署到Web App中)
3. 項目建好之后,我們就可以嘗試發布了:)選擇發布應用
4. 在擴展工具安裝之后,我們可以此時看到Docker Container選項,當然這里我們要選擇通過容器方式發布,選擇它;
5. 接下來,如果我們在Azure上沒有Docker虛擬機環境,我們可以選擇創建新的Azure Docker虛擬機(這里可是坑了我很長時間,希望看了上面預裝環境,大家不會碰到類似問題)
6. 這里可以根據實際Azure環境選擇訂閱,位置,映像文件(這里選擇的是最新的Windows Server 2016 TP3的Windows內核容器環境),尺寸,虛擬機用戶憑據等,注意如果之前沒有在當前用戶環境創建過證書文件,擴展工具內置的PowerShell腳本會檢測到并幫助你創建用于Docker環境TLS管理的證書文件到該目錄下,并且這樣通過Docker工具或腳本連接資源時,就可以通過默認證書配置連接了。
(*注意,目前此功能只能支持國際版的Azure環境,對于國內Azure版本我們還需要耐心等待)
7. 我們選擇完成之后,其實可以從當前Web工程中看到擴展工具為我們生成的構建Docker虛擬機資源組的配置文件*.json,及默認參數配置文件*.param.dev.json;另外還會生成證書文件創建及應用Docker虛擬機模板創建Docker虛擬機環境的腳本文件;
8. 開始創建虛擬機資源組,泡杯咖啡耐心等待,直到虛擬機創建成功等待我們部署我們的Web應用。
9. 我們可以通過PowerShell驗證一下是否資源已經創建好了;
Switch-AzureMode -Name AzureResourceManager Get-AzureResource -Name DemoAsp5Net -OutputObjectFormat New Name : demoasp5net ResourceId : /subscriptions/3cf430da-bda2-4739-b6c8-44092933335b/resourceGroups/demoasp5net/providers/Microsoft. Compute/virtualMachines/demoasp5net ResourceName : demoasp5net ResourceType : Microsoft.Compute/virtualMachines ResourceGroupName : demoasp5net Location : westus SubscriptionId : 3cf430da-bda2-4739-b6c8-44092933335b Tags : {System.Collections.Hashtable}
10. 接下來,我們可以在此虛擬機上部署我們的測試Web應用了,再次選擇發布選項;此時如果Dockfile部分沒有文件,沒有關系,擴展工具會幫助我們創建用戶創建基礎Docker映像的Dockfile;點擊Validate Connection確認此時已經可以連接到Azure上的Docker虛擬機環境;
11. 選擇發布后,擴展工具會通過gulp/Grunt,DNU.CMD打包Web應用程序,并通過Dockfile和Docker命令行工具創建映像文件;之后通過映像文件創建容器并按照我們在上一步制定的映射端口映射容器到外部,測試中發現其實包括Azure外部的端點Endpoint映射也幫我們做好了,還真是事半功倍啊!
12. 全部部署完成之后,我們可以點擊output中的應用URL訪問網站并驗證是否ASP.NET應用已經部署成功,
13. 此時如果愿意,也可以在測試機上連接Azure上的Docker環境并查看容器運行時環境:
行文至此,這個Docker集成工具就先到這里吧,希望對公有云,.NET跨平臺以及容器應用有興趣的朋友可以自行體驗:)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。