日韩性视频-久久久蜜桃-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 应用程序容器化的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 欧洲做受高潮欧美裸体艺术 | 偷偷色噜狠狠狠狠的777米奇 | 色噜噜色综合 | 国内成人自拍视频 | 夜夜夜操操操 | 国产大片91 | 自拍三级视频 | 日日操夜夜爱 | 极品在线播放 | 日韩最新av | 美国色综合 | 精品国产乱码久久久久久预案 | 国产精品一区二区三区四 | 69社| 激情五月婷婷丁香 | 国产区在线观看视频 | 亚洲激情自拍偷拍 | 日韩欧美视频一区 | 人善交videos欧美3d动漫 | 国产综合精品一区二区三区 | 91久久精品国产91久久性色tv | 欧美男人又粗又长又大 | 成人精品一区二区三区视频 | 波多野结衣欲乱上班族 | 精品久久久久亚洲 | 麻豆国产91在线播放 | 国产精品久久久久久久久岛 | 四川丰满少妇被弄到高潮 | 一本大道av伊人久久综合 | 永久视频在线 | 色欲AV无码精品一区二区久久 | 亚洲综合图片网 | 黄视频在线观看免费 | 国产专区在线播放 | 国产在线欧美 | 重口变态虐黄网站 | 亚洲一区二区动漫 | 黄色网址在线免费播放 | 91av一区 | 免费av不卡在线观看 | 国产一二三区免费视频 | 激情综合站 | 全部孕妇毛片丰满孕妇孕交 | 欧美淫视频 | 亚洲乱亚洲乱妇 | 视频一二区 | 精品国产91 | 欧美一级黄色片网站 | 国产激情视频一区二区三区 | 好妞色妞国产在线视频 | 免费在线观看成人av | 久久影音先锋 | 黄频在线 | 亚洲成人视屏 | 深爱婷婷 | aaa国产精品 | 日本网站免费 | 香港黄色网 | 日本高清一区二区视频 | 神秘马戏团在线观看免费高清中文 | 桃色91 | 午夜看片在线 | 99免费国产 | a国产精品| 亚洲一区二区在线观看视频 | 在线免费看黄色片 | 日本偷偷操| 99久久久无码国产精品性色戒 | 日韩av一区二区在线观看 | 欧美日韩在线免费观看 | 欧美另类在线播放 | 伊人久久97| 99情趣网 | 中文字幕国产精品 | 欧美图片一区二区三区 | 少妇网站在线观看 | 欧美狠狠操 | 最新最近中文字幕 | 五月天婷婷视频 | 天天干夜夜操 | 欧美乱妇15p | 亚洲精品国产一区 | www.亚洲色图.com| 七月丁香婷婷 | 欧美精品四区 | 久久久久久亚洲中文字幕无码 | 激情视频免费观看 | 亚洲50p | 成人免费网站 | 在线碰| 亚洲AV无码一区二区三区蜜桃 | a级国产视频 | 波多野吉衣毛片 | 国产亚洲精品aaaaaaa片 | 97久久综合| 女性爱爱视频 | xx色综合 | 国产www在线 | 久操中文|