Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有办法在Linux容器中运行.NET核心应用程序?_C#_.net_Docker_Linux Containers - Fatal编程技术网

C# 有没有办法在Linux容器中运行.NET核心应用程序?

C# 有没有办法在Linux容器中运行.NET核心应用程序?,c#,.net,docker,linux-containers,C#,.net,Docker,Linux Containers,我使用Visual Studio 2017(在Windows上)创建了我的.Net Core应用程序,并尝试在docker容器中运行它。基于.NET核心应用程序,美国开发者可以创建跨平台兼容的软件 .NET Core是用于构建网站的.NET的跨平台版本, 服务和控制台应用程序 我的尝试是创建一个.NET核心控制台应用程序 using System; using Newtonsoft.Json; namespace Services { class Program {

我使用Visual Studio 2017(在Windows上)创建了我的
.Net Core应用程序
,并尝试在docker容器中运行它。基于.NET核心应用程序,美国开发者可以创建跨平台兼容的软件

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

我的尝试是创建一个.NET核心控制台应用程序

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"]
。。然而,我似乎总是得到以下错误信息

无法在此平台上使用映像操作系统“windows”

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

行:

FROM microsoft/aspnetcore:1.0.13-nanoserver-sac2016 AS base  
正在加载microsoft nanoserver 2016作为基本映像。这是windows服务器,不是linus服务器。显然,生成的映像必须在WIndows内核上运行

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

有两个相关链接:

  • 正如您所说,您使用了一个官方存储库。嗯,它有一个网站,列出了所有的图像,windows和linux

  • 在中有关于如何构建基本映像的文档,也详细介绍了本主题(查找Linux)

根本没有办法使平台apltform独立。因为docker不运行虚拟机,而是共享主操作系统的“超薄”虚拟化。。。。映像的主操作系统必须匹配。

行:

FROM microsoft/aspnetcore:1.0.13-nanoserver-sac2016 AS base  
正在加载microsoft nanoserver 2016作为基本映像。这是windows服务器,不是linus服务器。显然,生成的映像必须在WIndows内核上运行

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

有两个相关链接:

  • 正如您所说,您使用了一个官方存储库。嗯,它有一个网站,列出了所有的图像,windows和linux

  • 在中有关于如何构建基本映像的文档,也详细介绍了本主题(查找Linux)


根本没有办法使平台apltform独立。因为docker不运行虚拟机,而是共享主操作系统的“超薄”虚拟化。。。。映像的主操作系统必须匹配。

嗯,您选择使用windows server映像作为基本映像,这样您就可以得到您所要求的。某种程度上可以回答这个问题。您将其发布到windows,因此它必须在windows上运行。core有很多可以发布到的操作系统。为什么要使用microsoft nanoserver(小型windows服务器)作为基本映像?@TomTom我考虑过使用该microsoft nanoserver映像,因为我目前想不出任何其他苗条的基本映像来运行我的应用程序。然而,我很高兴听到任何其他的图像使用Linux映像;)根据定义,操作系统不能独立于平台。这是平台。Docker不是VM,因此它必须使用正确的内核来实现slim虚拟化。对于深入的细节,请阅读是的,我已经阅读了您的答案,并将其标记为已接受。谢谢。如果有任何方法仍然编辑您的答案,我将非常感谢包含备选方案的编辑。(:嗯,您选择使用windows服务器映像作为基础映像,这样您就可以得到您想要的。您可以回答它。您可以将它发布到windows,因此它必须在windows上运行。core有很多操作系统可以发布它。为什么要使用microsoft nanoserver(小型windows服务器)作为基本映像?@TomTom我曾考虑过使用Microsoft Nanoserver映像,因为我目前想不出任何其他苗条的基本映像来运行我的应用程序。不过,我很高兴听到任何替代映像!-使用Linux映像;)操作系统可以根据定义独立于平台。这是平台。Docker不是VM,因此它必须使用正确的内核来实现slim虚拟化。对于深入的细节,请阅读是的,我已经阅读了您的答案,并将其标记为已接受。谢谢。如果有任何方法仍然编辑您的答案,我将非常感谢包含备选方案的编辑。(:这不是很明显,因为我从“aspnetcore”中获得了该图像,我再次认为它也可以跨平台兼容,但肯定..我明白你的意思..我可以使用任何替代方案吗?事实上是。有一个正式的docker图像(microsoft/aspnetcore)如果你费心看网站,那里有文档。那里有正式的Linux映像。没有跨平台的操作系统映像。这不是dotnetcore的问题-映像基于运行时,你可以明确地加载windows运行时,而不是Linux运行时(Linux基本操作系统将使用1.0.13-Jessie映像)。你的问题是,你需要一个操作系统(在dotnetcore之上),它不能独立于平台(因为它是平台),你使用的是Windows。这不是很明显,因为我从“aspnetcore”得到了这个图像我再次认为它也可以跨平台兼容,但我明白你的意思。我可以使用任何替代方案吗?实际上是。有一个正式的docker映像(microsoft/aspnetcore)如果你费心看网站,那里有文档。那里有正式的Linux映像。没有跨平台的操作系统映像。这不是dotnetcore的问题-映像基于运行时,你可以明确地加载windows运行时,而不是Linux运行时(Linux基本操作系统将使用1.0.13-Jessie映像)。您的问题是您需要一个不能独立于平台(因为它是平台)的操作系统(高于dotnetcore),并且您使用的是Windows。