有什么方法可以在 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 基本图像。
有两个相关链接:
正如您所说,您使用的是官方存储库。好吧,它在 https://hub.docker.com/r/microsoft/aspnetcore/ 有一个网站,列出了所有图像,windows 和 linux。
在 https://docs.microsoft.com/en-us/dotnet/core/docker/building-net-docker-images 上也有关于如何构建基本图像的文档,该图像也详细介绍了这个主题(查找 Linux)。
根本没有办法让apltform平台独立。由于 docker 不是 运行 虚拟机,而是 "slim" 共享主 OS 的虚拟化......镜像的主 OS 必须匹配。
我已经使用 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 基本图像。
有两个相关链接:
正如您所说,您使用的是官方存储库。好吧,它在 https://hub.docker.com/r/microsoft/aspnetcore/ 有一个网站,列出了所有图像,windows 和 linux。
在 https://docs.microsoft.com/en-us/dotnet/core/docker/building-net-docker-images 上也有关于如何构建基本图像的文档,该图像也详细介绍了这个主题(查找 Linux)。
根本没有办法让apltform平台独立。由于 docker 不是 运行 虚拟机,而是 "slim" 共享主 OS 的虚拟化......镜像的主 OS 必须匹配。