Docker容器中運行.Net Core應用程序

本篇文章經過一個實例爲你們演示如何在Docker容器中運行ASP.NET Core應用程序。html

生成ASP.NET Core應用程序

打開vs建立一個ASP.NET Core Application,如圖所示:web


打開Index.cshtml, 修改裏面的內容如圖所示:docker


直接運行application,如圖所示:windows


發佈應用程序(能夠理解成爲應用程序打包)

在vs中右鍵單擊web項目,而後在彈出的menu中選擇Publish,彈出如圖所示對話框:瀏覽器


點擊Create Profile按鈕,回到VS窗體中如圖所示頁面:app


點擊Publish按鈕,開始Publish當前應用程序,成功Publish以後,會在VS Output中看到如圖所示的信息:工具


咱們成功將當前應用程序Publish到了制定的PublishOutput文件夾中,如圖所示:post


添加Dockerfile文件

對dockerfile陌生的小夥伴能夠查看(在Docker容器中運行.Net Framework控制檯應用程序)文章中對Dockfile的解釋。ui

在Dockerfile文件中咱們添加以下命令:命令行

FROM microsoft/dotnet:2.2-aspnetcore-runtime-nanoserver-1803

經過FROM指令來指定咱們所要使用的基本鏡像

WORKDIR /app

經過workdir指令來設置dockerfile中所寫的命令(例如:RUN,ENTRYPOINT等等)在container中執行的地址

COPY PublishOutput/ /app

經過COPY指令來將publish的包copy到container中指定的地址

ENTRYPOINT ["dotnet", "HelloDockerNetCore.dll"]

經過ENTRYPOINT指令咱們指定在容器啓動時要運行的應用程序

建立鏡像(Image)

打開cmd命令行工具,進入到Dockerfile所在的文件夾,鍵入以下命令:

docker build -t hellodockercoreimage:v1 . 如圖所示:


docker經過build指令來建立鏡像(Image),build指令後的-t表示的是指定當前Image的Tag,你們能夠理解成Image的Name,鏡像名稱冒號後面的v1你們能夠理解成當前Image的版本號,若是不指定的話默認會爲latest,最後的. 表示的是Dockerfile所在的當前目錄。上面的指令能夠理解成基於Dockerfile建立一個v1版本的名爲hellodockercoreimage的鏡像,執行該命令會獲得如圖所示的結果:


截圖中顯示了Dockerfile中咱們所寫的指令的執行狀況,最後會提示你Image建立成功。若是你們是第一次執行FROM指令,docker daemon會去docker registry中拉取該基鏡像,這個過程至關於下載該鏡像到本地,執行起來會慢一些,你們不要着急。

咱們經過docker images指令來查看建立的鏡像,如圖所示:


運行容器

經過運行指令docker run -d -p 9001:80 --name hellodockercorecontainer hellodockercoreimage:v1 來運行容器,結果如圖所示,返回的是當前Container的ID,C:\ProgramData\Docker\windowsfilter\ 中找到該容器:


該指令表達的意思是基於hellodockercoreimage:v1鏡像在detached模式下運行一個名爲hellodockercorecontainer的容器,而且將宿主機器的9001端口與容器的80端口進行映射

瀏覽器中訪問ASP.Net Core 站點

容器啓動後,能夠經過http://locahost:9001 來訪問當前運行的站點,如圖所示:


還有另一種訪問方式,即經過container運行的IP+Port的方式訪問:http://{IP}:{Port}, 其中IP爲container的IP,Port爲container暴露的端口,不指定的話默認暴露的是80端口,咱們能夠經過以下指令獲取到container的IP:

docker inspect -f '{{.NetworkSettings.Networks.nat.IPAddress}}' container-name

能夠經過訪問地址http://cotainerip 來訪問當前運行的站點

以上咱們便完成了對ASP.NET Core應用程序容器化的過程,目前在VS2017中已經集成了對Docker的support,即咱們能夠在建立project的時候就直接指定當前project須要docker支持,這樣建立出來的程序就默認帶了Dockerfile文件,如圖所示,在建立工程的時候勾選中Enable Docker Support:



上一篇(在Docker容器中運行ASP.Net MVC應用程序)

下一篇(標記本地鏡像並上傳到鏡像庫中)

相關文章
相關標籤/搜索