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

Is there any way to run a .NET Core App inside a Linux container?

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

.NET Core is a cross-platform version of .NET for building websites, services, and console apps.

我的尝试是创建一个 .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

.. 我将其解释为 "You should use Windows-container to run this"。 但是现在我很困惑,因为两个我的控制台应用程序我的容器都应该是跨平台兼容的, 正确的?还是我遗漏了什么?

行:

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

正在加载 Microsoft NanoServer 2016 作为基础映像。这是 windows 服务器,不是 linus 服务器。显然,生成的图像必须 运行 在 WIndows 内核上。

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

有两个相关链接:

根本没有办法让apltform平台独立。由于 docker 不是 运行 虚拟机,而是 "slim" 共享主 OS 的虚拟化......镜像的主 OS 必须匹配。