有什么方法可以在Linux容器中运行.NET Core应用程序?

时间:2018-10-24 12:13:29

标签: c# .net docker linux-containers

我已经使用Visual Studio 2017(在Windows上)创建了.Net Core App,并试图在docker容器中运行它。基于他们的website ,. NET Core Apps应该允许我们的开发人员创建跨平台兼容的软件;

  

.NET Core是用于构建网站的.NET的跨平台版本,   服务和控制台应用。

我对此的尝试是创建一个.NET Core控制台应用程序;

using System;
using Newtonsoft.Json;

namespace Services
{
    class Program
    {
        static void Main(string[] args)
        {
            if (Enum.TryParse(
                typeof(LoremIpsumGenerator.TypeOfGenerator),
                args[0],
                true,
                out var testParse))
            {
                Console.WriteLine(
                    JsonConvert.SerializeObject(
                        LoremIpsumGenerator
                            .GenerateText(
                                int.Parse(args[1]),
                                (LoremIpsumGenerator.TypeOfGenerator) testParse)));
            }

            Console.WriteLine("Wrong Parameters!");
        }
    }
}

通过dotnet publish发布它,并通过以下命令运行它;

FROM microsoft/aspnetcore:1.0.13-nanoserver-sac2016 AS base  

WORKDIR /Services  
COPY /bin/Debug/netcoreapp2.0/publish/ .  

ENTRYPOINT ["dotnet", "DockerConsoleTestApp.dll"]

..但是我似乎总是收到以下错误消息;

  

image operating system "windows" cannot be used on this platform

..我解释为“您应该使用Windows容器来运行它”。 但是现在我很困惑,因为我的控制台应用程序都应该是跨平台兼容的,对吗?还是我错过了什么?

1 个答案:

答案 0 :(得分:2)

该行:

FROM microsoft/aspnetcore:1.0.13-nanoserver-sac2016 AS base  

正在加载Microsoft nanoserver 2016作为基本映像。这是Windows服务器,而不是Linus服务器。显然,生成的图像必须在Windows内核上运行。

如果需要Linux基本映像,请使用Linux基本映像。

有两个相关链接:

根本没有办法使平台apltform独立。由于docker不运行VM,而是共享主操作系统的“苗条”虚拟化。...映像的主操作系统必须匹配。