C# 如何让docker toolbox与.net core 2.0项目配合使用

C# 如何让docker toolbox与.net core 2.0项目配合使用,c#,docker,asp.net-core,visual-studio-2017,microservices,C#,Docker,Asp.net Core,Visual Studio 2017,Microservices,尝试在.NET core 2.0项目中使用Docker功能时出错。我收到一条错误信息,上面说 Visual Studio容器工具要求Docker在 构建、调试或运行容器化项目。欲了解更多信息, 请参阅: 我跟随链接,当我意识到我有Windows10Homex64时,我不得不安装DockerToolbox,而不是DockerforWindows。现在它安装了这个名为 Docker快速启动终端 这是启动docker服务的方式吗?我已经试着运行这个可执行文件,它似乎正在工作。我的容器正在运行,但Vis

尝试在.NET core 2.0项目中使用Docker功能时出错。我收到一条错误信息,上面说

Visual Studio容器工具要求Docker在 构建、调试或运行容器化项目。欲了解更多信息, 请参阅:

我跟随链接,当我意识到我有Windows10Homex64时,我不得不安装DockerToolbox,而不是DockerforWindows。现在它安装了这个名为

Docker快速启动终端

这是启动docker服务的方式吗?我已经试着运行这个可执行文件,它似乎正在工作。我的容器正在运行,但Visual Studio容器工具的错误仍然存在

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

更新:

我试图遵循格茨科特的建议,但在VisualStudio中关于这些工具的错误仍然存在。这是我在Docker快速启动终端中运行的内容。在VisualStudio成功打开该项目后,我尝试构建该项目,但仍然遇到上述关于容器工具的错误

我的devenv.exe文件位于

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

我的解决方案文件位于

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

更新2:


我在docker quickstart终端中运行了一些建议的命令,下面是使用docker Toolbox使用quetz

这些命令的结果,这有点棘手,但实际上core-2.0与此无关。这都是关于docker、docker工具箱和VS

首先:

这是启动docker服务的方式吗?我已经试着运行这个可执行文件,它似乎正在工作

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

现在,您必须意识到,在docker中,关于docker运行方式/位置的信息通常保存在环境变量中。
quickstart
脚本不仅为您启动docker机器并检查一些基本内容,它还设置了一些环境变量,以便以后所有的命令(如
docker
docker compose
等)都知道在哪里查找docker虚拟机。在您/我们的情况下,信息主要由VM的IP和Docker侦听的端口号组成

。。您的Visual Studio对此一无所知,因为我敢打赌,您已经从StartMenu或桌面图标或双击解决方案文件运行了VisualStudio,因此它没有机会从
quickstart
控制台获取环境变量

解决方案非常简单:确保VS获得这些信息。也就是说,确保它获得环境变量,确保它获得它们的新鲜状态,因为IP/端口有时可能会波动。所以不要只是将它们复制到你的操作系统设置中,因为没有任何东西会自动刷新它们

我发现的最简单的方法是关闭Visual Studio,运行docker toolbox quickstart控制台,然后从该控制台运行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
写的路径相当长,即使有制表符完成,所以通常会制作一个小的
.sh
脚本来为我运行它


顺便说一句!请注意,到DEVENV的路径必须类似于unix(
/c/Program\Files…
),因为mingw shell必须理解这一点,而到解决方案的路径必须是正常的windows路径(
c:\projects\foo\bar\…
)因为VisualStudio将在启动后尝试读取这些内容。

这就是我使用docker toolbox在windows 10 home上运行vs 2017所做的工作。你遵循这一点,我保证它会起作用。注意:这仅适用于不支持本机docker for windows应用程序的windows 10 home:

  • 在w10 home上安装docker工具箱

  • 运行docker QuickStart terminal一次以创建docker机器。这需要一段时间。因此,在分配IP地址和其他内容时要耐心

  • 完成后,将显示一个命令提示符。键入“docker机器ip默认值”。记下ip地址,因为以后需要它

  • 关闭“快速启动终端”窗口。这只是为了将一个小型Ubuntu linux服务器的boot2docker.iso映像初始化为virtualbox应用程序(又称docker机器,又称默认vm)。如果您不熟悉虚拟化技术或oracle virtualbox,请停止阅读并先阅读它们,然后重新开始。但如果你这样做了,那么很高兴继续

  • 正如我提到的,docker机器实例是一个Linux虚拟机,因此很明显,您只能打开使用.net核心技术构建的项目。不幸的是,对于完整的.net framework,您需要运行仅在Windows 10 pro上可用的Windows容器,或者在virtualbox上构建自己的Windows nano server或2016 server vm,然后在docker网站上使用并遵循本机docker for Windows的步骤。从这里开始,这个答案的其余部分将对那些只想在LinuxVM/docker机器上运行核心项目的人有所帮助

  • 在管理员模式下打开windows power shell并键入“docker machine ls”以确认默认vm正在运行。还可以执行“docker machine status default”,并应返回“running”

  • 现在打开运行默认vm的virtualbox应用程序并单击设置。打开“共享驱动器”选项卡,您需要确保主机上的“c:\Users”文件夹已映射/mo