我是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配置主机'
答案 0 :(得分:51)
您可以在docker-compose.dcproj
文件中设置要定位的操作系统:
<DockerTargetOS>Linux</DockerTargetOS>
要将docker守护程序切换到相同的操作系统,您可以使用Docker托盘图标或Docker Settings窗口(可从同一菜单访问):
答案 1 :(得分:6)
答案 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容器,则需要更多步骤:
在Dockerfile上,对于基础使用“ microsoft / aspnetcore:2.0”,对于构建,请使用“ microsoft / aspnetcore-build:2.0”,因此它应如下所示:
<Route path="/Sessions/:id" exact render={props => <Wrapper {...props} /> }/>
右键单击Docker托盘图标>设置>共享驱动器>选择项目所在的驱动器。
答案 4 :(得分:0)
如果docker在Windows计算机上运行,则需要将.dcproj文件中的“ DockerTargetOS”的值更改为“ Windows”。
从Visual Studio卸载Docker项目并编辑该项目,并将值“ Windows”设置为“ DockerTargetOS”。
<DockerTargetOS>Windows</DockerTargetOS>