ASP.NET Core docker构建错误

问题描述 投票:36回答:5

我是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配置主机”的位置

c# docker asp.net-core docker-compose asp.net-core-2.0
5个回答
53
投票

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

<DockerTargetOS>Linux</DockerTargetOS>

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


8
投票

基本上,Celestin Bochis和Pavel Agarkov的答案都很棒。但是至少自.net core 2.2以来,docker的os存储在.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

6
投票

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

OS dropdown

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


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”,所以它应该如下所示: FROM microsoft/aspnetcore:2.0 AS base WORKDIR /app EXPOSE 80 FROM microsoft/aspnetcore-build:2.0 AS build WORKDIR /src COPY WebApplication7/WebApplication.csproj WebApplication/ RUN dotnet restore WebApplication/WebApplication.csproj COPY . . WORKDIR /src/WebApplication RUN dotnet build WebApplication.csproj -c Release -o /app
  4. 右键单击Docker托盘图标>设置>共享驱动器>选择项目所在的驱动器。

0
投票

如果docker在windows机器上运行,那么你需要在.dcproj文件中更改“DockerTargetOS”的值应为“Windows”。

从visual studio卸载docker项目并编辑项目并将值“Windows”设置为“DockerTargetOS”。

<DockerTargetOS>Windows</DockerTargetOS>
© www.soinside.com 2019 - 2024. All rights reserved.