ASP.NET Core docker构建错误

时间:2017-10-16 22:21:06

标签: c# docker asp.net-core docker-compose asp.net-core-2.0

我是ASP.NET Core和docker的新手。 我创建了一个简单的ASP.NET Core 2.0应用程序,并尝试在Windows上使用docker。但是,我收到了这个错误:

Your Docker server host is configured for 'Linux', however the docker-compose project targets 'Windows'.

虽然这似乎是非常有用的错误,但我无法找到在哪里为Windows配置主机'

5 个答案:

答案 0 :(得分:51)

您可以在docker-compose.dcproj文件中设置要定位的操作系统:

<DockerTargetOS>Linux</DockerTargetOS>

要将docker守护程序切换到相同的操作系统,您可以使用Docker托盘图标或Docker Settings窗口(可从同一菜单访问):
enter image description here

答案 1 :(得分:6)

在启用docker支持时,请确保选择正确的操作系统:

OS dropdown

您的docker守护程序也必须以Linux容器为目标。

答案 2 :(得分:5)

Celestin Bochis和Pavel Agarkov的回答基本上都很棒。但是,至少从.net core 2.2开始,docker的操作系统存储在.csproj文件中。

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
    ...
   </PropertyGroup>

   ...
</Project>

也不要忘记修改您的docker文件。图像应该是正确的。对于.net core 2.2,即:

Linux:
Microsoft/dotnet:2.2-aspnetcore-runtime AS base
microsoft/dotnet:2.2-sdk AS build

Windows:
microsoft/dotnet:2.2-aspnetcore-runtime-nanoserver-1803
microsoft/dotnet:2.2-sdk-nanoserver-1803

答案 3 :(得分:0)

当我创建针对Windows的项目,后来又想将其切换至Linux时,出现了此错误。如果要改为使用Linux容器,则需要更多步骤:

  1. 卸载docker-compose,将DockerTargetOS编辑到Linux,然后重新加载项目
  2. 转到docker-compose.yml。确保反斜杠是正斜杠。应该看起来像“ WebApplication / Dockerfile”
  3. 在Dockerfile上,对于基础使用“ microsoft / aspnetcore:2.0”,对于构建,请使用“ microsoft / aspnetcore-build:2.0”,因此它应如下所示:

    <Route path="/Sessions/:id" exact render={props => <Wrapper {...props} /> }/>
  4. 右键单击Docker托盘图标>设置>共享驱动器>选择项目所在的驱动器。

答案 4 :(得分:0)

如果docker在Windows计算机上运行,​​则需要将.dcproj文件中的“ DockerTargetOS”的值更改为“ Windows”。

从Visual Studio卸载Docker项目并编辑该项目,并将值“ Windows”设置为“ DockerTargetOS”。

<DockerTargetOS>Windows</DockerTargetOS>