如何让docker工具箱与.net core 2.0项目一起工作

我收到一个错误,试图使用我的.NET核心2.0项目的Dockerfunction。 我收到一条错误消息说

Visual Studio容器工具要求Docker在构build,debugging或运行容器化项目之前运行。 有关更多信息,请参阅: http : //aka.ms/DockerToolsTroubleshooting

我跟着链接,并意识到我有Windows 10 Home x64,并不得不安装Docker Toolbox,而不是Docker for Windows。 现在它安装了这个可执行文件

Docker快速入门terminal

这是否应该启动docker服务? 我曾尝试运行这个可执行文件,它似乎工作。 我的容器正在运行,但Visual Studio容器工具的错误仍然存​​在。

我错过了什么? 为了在Visual Studio 2017中使用Docker容器支持,是否需要比Home更高版本的Windows?

更新:

我试图按照Quetzcoatl的build议,我仍然在Visual Studio中得到了关于这些工具的同样的错误。 这是我在Docker快速入门terminal中运行的内容。 我试图在Visual Studio成功打开项目之后构build项目,并且仍然收到有关容器工具的上述错误。

我的devenv.exe文件位于

C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Community \ Common7 \ IDE \ devenv.exe

和我的解决scheme文件位于

D:\ Development \ Visual Studio \ Musify2 \ Musify2 \ Musify2.sln

在这里输入图像说明

更新2:

我运行了一些build议的命令在docker quickstartterminal尝试,这里是这些命令quetz的结果 在这里输入图像说明

Docker Toolbox有点棘手,但实际上core-2.0在这里没有任何关系。 这是关于docker工人,docker工具箱和VS.

首先:

这是否应该启动docker服务? 我曾尝试运行这个可执行文件,它似乎工作。

是的。 如果docker机/服务正在运行 – 这很好!

现在,您必须认识到,在docker工人中,docker工人如何/在哪里运行的信息保存在环境variables中quickstart脚本不仅为您启动docker-machine并检查一些基本的东西,还会设置一些环境variables,以便后来的所有命令(如dockerdocker-compose等)知道在哪里查找docker虚拟机。 在我们的例子中,信息主要由VM的IP和Docker监听的端口号组成。

..和你的Visual Studio不知道这一点,因为,我敢打赌,你已经从StartMenu或从桌面图标运行VisualStudio或双击解决scheme文件,所以它没有机会获得环境variables从quickstart控制台。

解决scheme很简单:确保VS获取该信息。 也就是说,确保获得这些环境variables, 确保它得到它们的新鲜状态,因为IP /端口有时可能会波动。 所以不要把它们复制到你的操作系统设置,因为没有什么会自动刷新它们。

我find的最简单的方法是closuresVisual Studio,运行docker toolbox快速入门控制台,然后从该控制台中运行VisualStudio ,例如我的VS2017社区版:

 Starting "default"... (default) Check network to re-create if needed... (default) Waiting for an IP... (.......snip..........) ## . ## ## ## == ## ## ## ## ## === /"""""""""""""""""\___/ === ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~ \______ o __/ \ \ __/ \____\_______/ docker is configured to use the default machine with IP 192.168.99.100 For help getting started, check out the docs at https://docs.docker.com Start interactive shell quetzalcoatl@LAP049 MINGW32 ~ $ /c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/Community/Common7/IDE/devenv.exe C:\\PATH\\TO\\MY\\SOLUTION.sln 

即使使用TAB完成,path的写入也相当长,所以通常会使用一个小小的.sh脚本来为我运行。

BTW! 请注意,DEVENV的path必须是类似于unix的( /c/Program\ Files... ),因为mingw shell必须明白,虽然SOLUTION的path必须是正常的Windowspath( c:\projects\foo\bar\.. ),因为VisualStudio会在启动后尝试读取它。