docker运行.net core
一、测试dotnet是否安装
dotnet --info
如果出现如下信息,则已安装,否则请进行安装,安装就不细说了,到.net官网找对应的版本
二、创建一个console示例程序
dotnet new console -o App -n DotNet.Docker
三、修改program.cs代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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文件,这里实际上把第四步发布的命令也可以包含进来
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
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