日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

netcore更新dll要停止_使 .NET Core 应用程序容器化

發布時間:2025/4/5 asp.net 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 netcore更新dll要停止_使 .NET Core 应用程序容器化 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在本教程中,你將了解如何使用 Docker 容器化 .NET Core 應用。 容器具有很多特性和優點,如具有不可變的基礎結構、提供可移植的體系結構和實現可伸縮性。 此影像可用于為本地開發環境、私有云或公有云創建容器。

在本教程中,你將了解:

  • 創建并發布簡單的 .NET Core 應用
  • 創建并配置用于 .NET Core 的 Dockerfile
  • 生成 Docker 映像
  • 創建并運行 Docker 容器

你將了解用于 .NET Core 應用的 Docker 容器生成和部署任務。 Docker 平臺 使用 Docker 引擎 快速生成應用,并將應用打包為 Docker 映像 。 這些映像采用 Dockerfile 格式編寫,以供在分層容器中部署和運行。

備注

本教程不適用于 ASP.NET Core 應用 。 如果使用的是 ASP.NET Core,請參閱教程了解如何容器化 ASP.NET Core 應用程序。

先決

條件

安裝以下必備組件:

  • .NET Core 3.1 SDK
    如果已安裝 .NET Core,請使用 dotnet --info 命令來確定使用的是哪個 SDK。
  • Docker 社區版
  • Dockerfile 和 .NET Core 示例應用的臨時工作文件夾 。 在本教程中,docker-working 用作工作文件夾的名稱。

創建 .Net Core 應用

需要有可供 Docker 容器運行的 .NET Core 應用。 打開終端、創建工作文件夾(如果尚沒有),然后進入該文件夾。 在工作文件夾中,運行下面的命令,在名為“app”的子目錄中新建一個項目 :

.NET Core CLI復制

dotnet new console -o App -n NetCore.Docker

文件夾樹將如下所示:

復制

docker-working └──App ├──NetCore.Docker.csproj ├──Program.cs └──obj ├──NetCore.Docker.csproj.nuget.dgspec.json ├──NetCore.Docker.csproj.nuget.g.props ├──NetCore.Docker.csproj.nuget.g.targets ├──project.assets.json └──project.nuget.cache

dotnet new 命令會新建一個名為“應用”的文件夾,并生成一個“Hello World”控制臺應用程序 。 從終端會話更改目錄并導航到“App”文件夾 。 使用 dotnet run 命令啟動應用。 應用程序將運行,并在命令下方打印 Hello World!:

.NET Core CLI復制

dotnet runHello World!

默認模板創建應用,此應用先打印輸出到終端,然后立即終止。 本教程將使用無限循環的應用。 在文本編輯器中,打開“Program.cs” 文件。

提示

如果使用 Visual Studio Code,則從上一個終端會話中鍵入以下命令:

復制

code .

這會在 Visual Studio Code 中打開包含該項目的“App”文件夾 。

Program.cs 應如下面的 C# 代碼所示 :

C#復制

using System;namespace NetCore.Docker{ class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); } }}

將此文件替換為以下每秒計數一次的代碼:

C#復制

using System;using System.Threading.Tasks;namespace NetCore.Docker{ class Program { static async Task Main(string[] args) { var counter = 0; var max = args.Length != 0 ? Convert.ToInt32(args[0]) : -1; while (max == -1 || counter < max) { Console.WriteLine($"Counter: {++counter}"); await Task.Delay(1000); } } }}

保存此文件,并使用 dotnet run 再次測試程序。 請注意,此應用無限期運行。 使用取消命令 Ctrl+C 可以停止運行。 下面是一個示例輸出:

.NET Core CLI復制

dotnet runCounter: 1Counter: 2Counter: 3Counter: 4^C

如果你在命令行中向應用傳遞一個數字,它就只會計數到這個數字,然后退出。 試一試用 dotnet run -- 5 計數到 5。

重要

-- 之后的參數都不傳遞到 dotnet run 命令,而是傳遞到你的應用程序。

發布 .Net Core 應用

在將 .NET Core 應用添加到 Docker 映像之前,必須先發布該應用。 最好讓容器運行應用的已發布版本。 若要發布應用,請運行以下命令:

.NET Core CLI復制

dotnet publish -c Release

此命令將應用編譯到“發布”文件夾中 。 從工作文件夾到“發布”文件夾的路徑應為 .AppbinReleaseetcoreapp3.1publish

  • Windows
  • Linux

在“應用”文件夾中獲取“發布”文件夾的目錄列表,以驗證 NetCore.Docker.dll 文件是否已創建 。

PowerShell復制

dir .binReleaseetcoreapp3.1publish Directory: C:甥敳獲dapineAppbinReleaseetcoreapp3.1publishMode LastWriteTime Length Name---- ------------- ------ -----a---- 4/27/2020 8:27 AM 434 NetCore.Docker.deps.json-a---- 4/27/2020 8:27 AM 6144 NetCore.Docker.dll-a---- 4/27/2020 8:27 AM 171520 NetCore.Docker.exe-a---- 4/27/2020 8:27 AM 860 NetCore.Docker.pdb-a---- 4/27/2020 8:27 AM 154 NetCore.Docker.runtimeconfig.json

創建 Dockerfile

docker build 命令使用 Dockerfile 文件來創建容器映像。 此文件是名為“Dockerfile” 的文本文件,它沒有擴展名。

在包含 .csproj 的目錄中創建名為“Dockerfile”的文件,并在文本編輯器中將其打開 。 本教程將使用 ASP.NET Core 運行時映像(包含 .NET Core 運行時映像),并與 .NET Core 控制臺應用程序相對應。

Dockerfile復制

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1

備注

盡管可能已使用 mcr.microsoft.com/dotnet/core/runtime:3.1 映像,但此處有意使用 ASP.NET Core 運行時映像。

FROM 關鍵字需要完全限定的 Docker 容器影像名稱。 Microsoft 容器注冊表(MCR,mcr.microsoft.com)是 Docker Hub 的聯合,可托管可公開訪問的容器。 dotnet/core 段是容器存儲庫,其中 aspnet 段是容器映像名稱。 該映像使用 3.1 進行標記,它用于版本控制。 因此,mcr.microsoft.com/dotnet/core/aspnet:3.1 是 .NET Core 3.1 運行時。 請確保拉取的運行時版本與 SDK 面向的運行時一致。 例如,在上一節中創建的應用使用的是 .NET Core 3.1 SDK,并且 Dockerfile 中引用的基本映像標記有 3.1 。

保存 Dockerfile 文件 。 工作文件夾的目錄結果應如下所示。 為節省本文的空間,省略了一些更深級別的文件和文件夾:

復制

docker-working └──App ├──Dockerfile ├──NetCore.Docker.csproj ├──Program.cs ├──bin │ └──Release │ └──netcoreapp3.1 │ └──publish │ ├──NetCore.Docker.deps.json │ ├──NetCore.Docker.exe │ ├──NetCore.Docker.dll │ ├──NetCore.Docker.pdb │ └──NetCore.Docker.runtimeconfig.json └──obj └──...

在終端中運行以下命令:

Docker復制

docker build -t counter-image -f Dockerfile .

Docker 會處理 Dockerfile 中的每一行。 docker build 命令中的 . 指示 Docker 在當前文件夾中查找 Dockerfile 。 此命令生成映像,并創建指向相應映像的本地存儲庫“counter-image” 。 在此命令完成后,運行 docker images 以列出已安裝的映像:

Docker復制

docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEcounter-image latest e6780479db63 4 days ago 190MBmcr.microsoft.com/dotnet/core/aspnet 3.1 e6780479db63 4 days ago 190MB

請注意,兩個映像共用相同的“IMAGE ID” 值。 兩個映像使用的 ID 值相同是因為,Dockerfile 中的唯一命令是在現有映像的基礎之上生成新映像。 接下來,在 Dockerfile 中添加三個命令 。 兩個命令都新建映像層,最后一個命令表示 counter-image 存儲庫條目指向的映像 。

Dockerfile復制

COPY bin/Release/netcoreapp3.1/publish/ App/WORKDIR /AppENTRYPOINT ["dotnet", "NetCore.Docker.dll"]

COPY 命令指示 Docker 將計算機上的指定文件夾復制到容器中的文件夾。 在此示例中,“publish”文件夾被復制到容器中的“App”文件夾 。

WORKDIR 命令將容器內的當前目錄更改為“App” 。

下一個命令 ENTRYPOINT 指示 Docker 將容器配置為可執行文件運行。 在容器啟動時,ENTRYPOINT 命令運行。 當此命令結束時,容器也會自動停止。

在終端中,運行 docker build -t counter-image -f Dockerfile .;在此命令完成后,運行 docker images。

Docker復制

docker build -t counter-image -f Dockerfile .Sending build context to Docker daemon 1.117MBStep 1/4 : FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 ---> e6780479db63Step 2/4 : COPY bin/Release/netcoreapp3.1/publish/ App/ ---> d1732740eed2Step 3/4 : WORKDIR /App ---> Running in b1701a42f3ffRemoving intermediate container b1701a42f3ff ---> 919aab5b95e3Step 4/4 : ENTRYPOINT ["dotnet", "NetCore.Docker.dll"] ---> Running in c12aebd26cedRemoving intermediate container c12aebd26ced ---> cd11c3df9b19Successfully built cd11c3df9b19Successfully tagged counter-image:latestdocker imagesREPOSITORY TAG IMAGE ID CREATED SIZEcounter-image latest cd11c3df9b19 41 seconds ago 190MBmcr.microsoft.com/dotnet/core/aspnet 3.1 e6780479db63 4 days ago 190MB

Dockerfile 中的每個命令生成了一個層,并創建了“IMAGE ID” 。 最終“IMAGE ID”是“cd11c3df9b19”(你的 ID 會有所不同),接下來在此映像的基礎之上創建容器 。

創建容器

至此,已有包含應用的映像,可以創建容器了。 可以通過兩種方式來創建容器。 首先,新建已停止的容器。

Docker復制

docker create --name core-counter counter-image0f281cb3af994fba5d962cc7d482828484ea14ead6bfe386a35e5088c0058851

上面的 docker create 命令在 counter-image 映像的基礎之上創建容器 。 此命令的輸出顯示已創建容器的“CONTAINER ID” (你的 ID 會有所不同)。 若要查看所有 容器的列表,請使用 docker ps -a 命令:

Docker復制

docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES0f281cb3af99 counter-image "dotnet NetCore.Dock…" 40 seconds ago Created core-counter

管理容器

容器是使用特定名稱 core-counter 創建的,此名稱用于管理容器。 下面的示例使用 docker start 命令來啟動容器,然后使用 docker ps 命令僅顯示正在運行的容器:

Docker復制

docker start core-countercore-counterdocker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES2f6424a7ddce counter-image "dotnet NetCore.Dock…" 2 minutes ago Up 11 seconds core-counter

同樣,docker stop 命令會停止容器。 下面的示例使用 docker stop 命令來停止容器,然后使用 docker ps 命令來顯示未在運行的容器:

Docker復制

docker stop core-countercore-counterdocker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

連接到容器

在容器運行后,可以連接到它來查看輸出。 使用 docker start 和 docker attach 命令,啟動容器并查看輸出流。 在此示例中,Ctrl+C 擊鍵用于從正在運行的容器中分離出來。 除非另行指定,否則此擊鍵將結束容器中的進程,這會停止容器。 --sig-proxy=false 參數可確保 Ctrl+C 不會停止容器中的進程。

從容器中分離出來后重新連接,以驗證它是否仍在運行和計數。

Docker復制

docker start core-countercore-counterdocker attach --sig-proxy=false core-counterCounter: 7Counter: 8Counter: 9^Cdocker attach --sig-proxy=false core-counterCounter: 17Counter: 18Counter: 19^C

刪除容器

就本文而言,你不希望存在不執行任何操作的容器。 刪除前面創建的容器。 如果容器正在運行,停止容器。

Docker復制

docker stop core-counter

下面的示例列出了所有容器。 然后,它使用 docker rm 命令來刪除容器,并再次檢查是否有任何正在運行的容器。

Docker復制

docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES2f6424a7ddce counter-image "dotnet NetCore.Dock…" 7 minutes ago Exited (143) 20 seconds ago core-counterdocker rm core-countercore-counterdocker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

單次運行

Docker 提供了 docker run 命令,用于將容器作為單一命令進行創建和運行。 使用此命令,無需依次運行 docker create 和 docker start。 另外,還可以將此命令設置為,在容器停止時自動刪除容器。 例如,使用 docker run -it --rm 可以執行兩項操作,先自動使用當前終端連接到容器,再在容器完成時刪除容器:

Docker復制

docker run -it --rm counter-imageCounter: 1Counter: 2Counter: 3Counter: 4Counter: 5^C

容器還會將參數傳遞給 .NET Core 應用的執行。 指示 .NET Core 應用僅計數為 3 個傳入 3 個。

Docker復制

docker run -it --rm counter-image 3Counter: 1Counter: 2Counter: 3

使用 docker run -it,Ctrl+C 命令會停止在容器中運行的進程,進而停止容器。 由于提供了 --rm 參數,因此在進程停止時自動刪除容器。 驗證它是否不存在:

Docker復制

docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

更改 ENTRYPOINT

使用 docker run 命令,還可以修改 Dockerfile 中的 ENTRYPOINT 命令,并運行其他內容,但只能針對相應容器。 例如,使用以下命令來運行 bash 或 cmd.exe。 根據需要,編輯此命令。

  • Windows
  • Linux

在本例中,ENTRYPOINT 更改為 cmd.exe。 通過按下 Ctrl+C 來結束進程并停止容器。

Docker復制

docker run -it --rm --entrypoint "cmd.exe" counter-imageMicrosoft Windows [Version 10.0.17763.379](c) 2018 Microsoft Corporation. All rights reserved.C:>dir Volume in drive C has no label. Volume Serial Number is 3005-1E84 Directory of C:04/09/2019 08:46 AM app03/07/2019 10:25 AM 5,510 License.txt04/02/2019 01:35 PM Program Files04/09/2019 01:06 PM Users04/02/2019 01:35 PM Windows 1 File(s) 5,510 bytes 4 Dir(s) 21,246,517,248 bytes freeC:>^C

總結

以上是生活随笔為你收集整理的netcore更新dll要停止_使 .NET Core 应用程序容器化的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: www.欧美在线 | 日本网站黄色 | av国语| 男男野外做爰全过程69 | 黄色录像二级片 | 中文字幕――色哟哟 | 亚洲成人av在线 | 日本精品久久久久久久 | 影音av资源 | 91国内揄拍国内精品对白 | 一级黄色片欧美 | 日韩精品免费播放 | 亚洲深夜福利视频 | 国产一级片中文字幕 | 精品在线观看一区 | 日韩女同一区二区三区 | 免费黄片毛片 | 在线观看不卡av | 久久久久18| 爱爱三级视频 | 欧美乱人伦 | 亚洲第一网站 | 免费看成人片 | 巨乳中文字幕 | 夜夜嗨av色一区二区不卡 | 特级西西444www | 强乱中文字幕av一区乱码 | 亚洲影视在线 | 韩国一级淫片免费看 | 久久久久久久久久一级 | 国产第一毛片 | 美女三级视频 | 黄色片免费播放 | 国产麻豆剧传媒精品国产av | 欧美成人精品一区二区三区 | 亚洲色图偷 | 一级高清视频 | 国产精品美女久久久网av | 久久伊人亚洲 | 亚洲天堂欧美在线 | 激情黄色av | 中文字幕日韩视频 | 美女赤身免费网站 | 国产传媒在线 | 少妇中出视频 | 久久无码人妻精品一区二区三区 | 国产精品一区二区三区久久久 | 91 高清 在线 制服 偷拍 | 成人a视频 | 久人人 | 日韩在线资源 | 亚洲一区二区蜜桃 | 国产亚洲精品久久久久久 | 日韩精品免费观看 | 欧美成人一级视频 | 欲求不满的岳中文字幕 | 国产av无码专区亚洲av毛片搜 | 96福利视频 | 国产精品午夜久久 | 永久视频在线观看 | 26uuu精品一区二区在线观看 | 三年大全国语中文版免费播放 | 国产精品综合 | 少妇视频网站 | 善良的老师伦理bd中字 | 日本aⅴ在线观看 | 国产精品不卡 | 久久久国产精品成人免费 | 免费观看av的网站 | 一级黄色电影片 | 免费av网站在线看 | 久久精品h| 亚洲网av| 超碰一区| 肉丝美脚视频一区二区 | 亚洲tv在线观看 | 人妻奶水人妻系列 | av在线网站观看 | av在线二区 | 国产精品久久国产精品 | 久久久区 | 国产97在线观看 | 911香蕉视频 | 在线成年人视频 | 欧美视频在线不卡 | 国产精品刘玥久久一区 | 男女日批免费视频 | 日韩在线www | 麻豆tube| 久久综合九色综合欧美狠狠 | 午夜免费看| 国语对白真实视频播放 | av福利网站 | 国产尤物精品 | 国产免费a视频 | 亚洲dvd| 欧美黄色一区 | 鲁丝av| 色猫咪av在线 |