docker運行.net core
一、測試dotnet是否安裝
dotnet --info
如果出現如下信息,則已安裝,否則請進行安裝,安裝就不細說了,到.net官網找對應的版本

二、創建一個console示例程序
dotnet new console -o App -n DotNet.Docker
三、修改program.cs代碼
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(TimeSpan.FromMilliseconds(1_000)); }
四、發布.net應用
dotnet publish -c Release
五、修改dockfile文件,這里實際上把第四步發布的命令也可以包含進來
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build-env WORKDIR /app # Copy everything COPY . ./ # Restore as distinct layers RUN dotnet restore # Build and publish a release RUN dotnet publish -c Release -o out # Build runtime image FROM mcr.microsoft.com/dotnet/aspnet:6.0 WORKDIR /app COPY --from=build-env /app/out . ENTRYPOINT ["dotnet", "DotNet.Docker.dll"]
為了提高安全性,可以選擇退出診斷管道。 選擇退出后,容器將以只讀方式運行。 為此,請將 DOTNET_EnableDiagnostics 環境變量指定為 0(就在 ENTRYPOINT 步驟之前):
ENV DOTNET_EnableDiagnostics=0
六、構建鏡象,通常使用下面命令構建鏡象
docker build -t counter-image -f Dockerfile .
七、創建容器
docker create --name core-counter counter-image
八、起動容器
docker start core-counter
九、連接到容器
docker attach --sig-proxy=false core-counter
連接成功,則開始運行如下計時器了
docker attach --sig-proxy=false core-counter Counter: 7 Counter: 8 Counter: 9 ^C
十、另外也可以單次運行實例
Docker 提供了 docker run 命令,用于將容器作為單一命令進行創建和運行。 使用此命令,無需依次運行 docker create 和 docker start。 另外,還可以將此命令設置為,在容器停止時自動刪除容器。 例如,使用 docker run -it --rm 可以執行兩項操作,先自動使用當前終端連接到容器,再在容器完成時刪除容器:
docker run -it --rm counter-image 3 Counter: 1 Counter: 2 Counter: 3
十一、還可以在ENTRYPOINT下運行同容器的其它dll
docker run -it --rm --entrypoint "bash" counter-image root@9f8de8fbd4a8:/App# ls DotNet.Docker DotNet.Docker.deps.json DotNet.Docker.dll DotNet.Docker.pdb DotNet.Docker.runtimeconfig.json root@9f8de8fbd4a8:/App# dotnet DotNet.Docker.dll 7 Counter: 1 Counter: 2 Counter: 3 ^C root@9f8de8fbd4a8:/App# exit exit
摘自:https://docs.microsoft.com/zh-cn/dotnet/core/docker/build-container?tabs=windows

浙公網安備 33010602011771號