在 Windows 使 .NET 应用容器化

先决条件

安装 .NET SDK 6.0
安装 Docker 社区版

一、安装 WSL2

# 此命令将启用所需的可选组件
> wsl --install

# 将 WSL 2 设置为默认版本
> wsl --set-default-version 2

# 安装 Ubuntu-20.04
> wsl --install -d Ubuntu-20.04

二、创建 .NET 应用

使用命令行创建项目

> dotnet new console -o App -n DotNet.Docker

Program.cs 应如下面的 C# 代码所示 :

Console.WriteLine("Hello World!");

将此文件替换为以下每秒计数一次的代码:

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 rundotnet run -- 5 启动测试程序。

三、创建 Dockerfile

创建 Dockerfile 并写入代码:

FROM mcr.microsoft.com/dotnet/aspnet:6.0

COPY bin/Release/net6.0/publish/ App/
WORKDIR /App
ENV DOTNET_EnableDiagnostics=0
ENTRYPOINT ["dotnet", "DotNet.Docker.dll"]

FROM 定制的镜像都是基于 FROM 的镜像
COPY 命令指示 Docker 将计算机上的指定文件夹复制到容器中的文件夹
WORKDIR 命令将容器内的当前目录更改为 App
ENV 设置容器环境变量
ENTRYPOINT 指示 Docker 将容器配置为可执行文件运行,在容器启动时,ENTRYPOINT 命令运行。

四、创建容器

首先创建对应的镜像

# 创建镜像,用 -t 设置镜像的名字
> docker build -t counter-image -f Dockerfile .
# 列出本地主机上的镜像
> docker images

然后创建容器

# 创建一个新的容器但不启动它
> docker create --name core-counter counter-image
# 查看已创建容器
> docker ps -a

五、管理容器

容器是使用特定名称 core-counter 创建的,此名称用于管理容器。

# 启动容器
> docker start core-counter
# 仅仅查看正在运行的容器
> docker ps
# 连接到正在运行中的容器 --sig-proxy=false 参数可确保 CTRL-D 或 CTRL-C 不会关闭容器
> docker attach --sig-proxy=false core-counter
# 停止容器
> docker stop core-counter
# 查看已创建容器
> docker ps -a
# 删除容器
> docker rm core-counter
# 再次查看是否成功删除
> docker ps -a

如果只是需要单次运行,则只需使用 docker run 无需依次运行 docker createdocker start

# 自动使用当前终端连接到容器,再在容器完成时删除容器
> docker run -it --rm counter-image
# 给程序传参 3 
> docker run -it --rm counter-image 3
# 查看容器停止后是否自动删除了
> docker ps -a

参考文档

安装 WSL
教程:使 .NET 应用容器化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值