Docker для Windows 7 с интеграцией Visual Studio 2017

Моя цель - создать среду разработки с докером и Kubernetes, интегрированную с Visual Studio 2017, чтобы я мог запускать приложение в контейнере докера непосредственно из Visual Studio. Я на ОС Windows 7.

Мои исследования дошли до меня так далеко:

  1. Docker для Windows поддерживает только Windows 10+. В качестве альтернативы я могу использовать Docker Toolbox, который настраивает виртуальную машину через Virtual Box и запускает виртуальную машину Linux (boot2docker). Docker фактически работает на этой виртуальной машине Linux и делит свой исполняемый файл с Windows 7 через переменные среды.
  2. Kitematic поставляется с Docker Toolbox и по сути является инструментом с графическим интерфейсом для управления моими образами докеров.

Вот вопросы, на которые я пытаюсь получить ответы, и проблемы, с которыми я сталкиваюсь:

  1. Когда я запускаю Kitematic, он говорит "Не удалось найти собственную настройку" для докера. Когда я пытаюсь установить Docker для Windows, нажатие на исполняемый файл ничего не делает. Разве невозможно установить Docker на Windows 7 без виртуальной машины посередине?
  2. При использовании Boot2Docker VM это дистрибутив Linux, и поэтому я могу использовать только ядро ​​.NET и ядро ​​ASP.NET. Если я не могу получить собственный экземпляр Docker, возможно ли иметь компьютер с Boot2Docker для Windows, чтобы я мог использовать на нем все.NET Framework?
  3. Я наконец смог собрать и запустить образ докера из Git Bash, используя докер Boot2Docker, но когда я пытаюсь интегрироваться с Visual Studio, я получаю эту ошибку: C:\Users\JoeTest\.nuget\packages\microsoft.visualstudio.azure.containers.tools.targets\1.0.1916590\build\Container.targets(222,5): error CTC1003: Visual Studio container tools require Docker to be running.

Я обнаружил различные решения, от PowerShell до обеспечения того, что папка C:/Users/ была распределена между образом Virtual Box и хостом Windows 7, но, похоже, ничего не работает для интеграции с VS Studio. Вот шаги для воспроизведения:

  1. Создан проект в Visual Studio 2017 для ядра ASP.NET в Windows 7
  2. Установленный и проверенный Docker Toolbox, например, может выполнить docker run hello-world
  3. Закрыл проект в VS Studio и настроил в Powershell следующее:

    docker-machine env $Env:DOCKER_TLS_VERIFY = "1" $Env:DOCKER_HOST = "tcp://192.168.99.100:2376" $Env:DOCKER_CERT_PATH = "C\Users\JoeTest\.docker\machine\machines\default" $Env:DOCKER_MACHINE_NAME = "default" $Env:COMPOSE_CONVERT_WINDOWS_PATHS = "true" /# Run this command to configure your shell: /# & "C:\Program Files\Docker Toolbox\docker-machine.exe" env | Invoke-Expression PS C:\Users\JoeTest> & "C:\Program Files\Docker Toolbox\docker-machine.exe" env | Invoke-Expression

    invoke-item C:\Users\JoeTest\source\repos\VSEWebAppSample\VSEWebAppSample.sln

Откроется проект Visual Studio. 4. Затем я набираю Ctrl + F5 и получаю следующий вывод:

1>------ Build started: Project: VSEWebAppSample, Configuration: Debug Any CPU ------
1>VSEWebAppSample -> C:\Users\JoeTest\source\repos\VSEWebAppSample\VSEWebAppSample\bin\Debug\netcoreapp2.1\VSEWebAppSample.dll
1>VSEWebAppSample -> C:\Users\JoeTest\source\repos\VSEWebAppSample\VSEWebAppSample\bin\Debug\netcoreapp2.1\VSEWebAppSample.Views.dll
1>C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NonInteractive -NoProfile -WindowStyle Hidden -ExecutionPolicy RemoteSigned -File "C:\Users\JoeTest\AppData\Local\Temp\GetVsDbg.ps1" -Version vs2017u5 -RuntimeID debian.8-x64 -InstallPath "C:\Users\JoeTest\vsdbg\vs2017u5"
1>Info: Using vsdbg version '15.7.20425.2'
1>Info: Using Runtime ID 'linux-x64'
1>Info: C:\Users\JoeTest\vsdbg\vs2017u5 exists, deleting.
1>Add-Type : Cannot add type. The assembly 'System.IO.Compression.FileSystem' cou
1>ld not be found.
1>At C:\Users\JoeTest\AppData\Local\Temp\GetVsDbg.ps1:47 char:13
1>+     Add-Type <<<<  -assembly "System.IO.Compression.FileSystem"
1>    + CategoryInfo          : ObjectNotFound: (System.IO.Compression.FileSyste
1>   m:String) [Add-Type], Exception
1>    + FullyQualifiedErrorId : ASSEMBLY_NOT_FOUND,Microsoft.PowerShell.Commands
1>   .AddTypeCommand
1>
1>Add-Type : Cannot add type. One or more required assemblies are missing.
1>At C:\Users\JoeTest\AppData\Local\Temp\GetVsDbg.ps1:47 char:13
1>+     Add-Type <<<<  -assembly "System.IO.Compression.FileSystem"
1>    + CategoryInfo          : InvalidData: (:) [Add-Type], InvalidOperationExc
1>   eption
1>    + FullyQualifiedErrorId : ASSEMBLY_LOAD_ERRORS,Microsoft.PowerShell.Comman
1>   ds.AddTypeCommand
1>
1>Add-Type : Cannot add type. The assembly 'System.IO.Compression' could not be f
1>ound.
1>At C:\Users\JoeTest\AppData\Local\Temp\GetVsDbg.ps1:48 char:13
1>+     Add-Type <<<<  -assembly "System.IO.Compression"
1>    + CategoryInfo          : ObjectNotFound: (System.IO.Compression:String) [
1>   Add-Type], Exception
1>    + FullyQualifiedErrorId : ASSEMBLY_NOT_FOUND,Microsoft.PowerShell.Commands
1>   .AddTypeCommand
1>
1>Add-Type : Cannot add type. One or more required assemblies are missing.
1>At C:\Users\JoeTest\AppData\Local\Temp\GetVsDbg.ps1:48 char:13
1>+     Add-Type <<<<  -assembly "System.IO.Compression"
1>    + CategoryInfo          : InvalidData: (:) [Add-Type], InvalidOperationExc
1>   eption
1>    + FullyQualifiedErrorId : ASSEMBLY_LOAD_ERRORS,Microsoft.PowerShell.Comman
1>   ds.AddTypeCommand
1>
1>New-Object : Cannot find type [System.IO.Compression.ZipArchive]: make sure the
1> assembly containing this type is loaded.
1>At C:\Users\JoeTest\AppData\Local\Temp\GetVsDbg.ps1:64 char:29
1>+     $zipArchive = New-Object <<<<  System.IO.Compression.ZipArchive -Argument
1>List $zipStream
1>    + CategoryInfo          : InvalidType: (:) [New-Object], PSArgumentExcepti
1>   on
1>    + FullyQualifiedErrorId : TypeNotFound,Microsoft.PowerShell.Commands.NewOb
1>   jectCommand
1>
1>Unable to find type [System.IO.Compression.ZipFileExtensions]: make sure that t
1>he assembly containing this type is loaded.
1>At C:\Users\JoeTest\AppData\Local\Temp\GetVsDbg.ps1:65 char:46
1>+     [System.IO.Compression.ZipFileExtensions] <<<< ::ExtractToDirectory($zipA
1>rchive, $targetLocation)
1>    + CategoryInfo          : InvalidOperation: (System.IO.Compression.ZipFile
1>   Extensions:String) [], RuntimeException
1>    + FullyQualifiedErrorId : TypeNotFound
1>
1>You cannot call a method on a null-valued expression.
1>At C:\Users\JoeTest\AppData\Local\Temp\GetVsDbg.ps1:66 char:24
1>+     $zipArchive.Dispose <<<< ()
1>    + CategoryInfo          : InvalidOperation: (Dispose:String) [], RuntimeEx
1>   ception
1>    + FullyQualifiedErrorId : InvokeMethodOnNull
1>
1>Out-File : Could not find a part of the path 'C:\Users\JoeTest\vsdbg\vs2017u5\s
1>uccess_rid.txt'.
1>At C:\Users\JoeTest\AppData\Local\Temp\GetVsDbg.ps1:97 char:26
1>+     $runtimeId | Out-File <<<<  -Encoding utf8 $SuccessRidFile
1>    + CategoryInfo          : OpenError: (:) [Out-File], DirectoryNotFoundExce
1>   ption
1>    + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.Ou
1>   tFileCommand
1>
1>Out-File : Could not find a part of the path 'C:\Users\JoeTest\vsdbg\vs2017u5\s
1>uccess_version.txt'.
1>At C:\Users\JoeTest\AppData\Local\Temp\GetVsDbg.ps1:100 char:24
1>+     $version | Out-File <<<<  -Encoding utf8 $SuccessVersionFile
1>    + CategoryInfo          : OpenError: (:) [Out-File], DirectoryNotFoundExce
1>   ption
1>    + FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.Ou
1>   tFileCommand
1>
1>Info: Successfully installed vsdbg at 'C:\Users\JoeTest\vsdbg\vs2017u5'
1>docker build -f "C:\Users\JoeTest\source\repos\VSEWebAppSample\VSEWebAppSample\Dockerfile" -t vsewebappsample:dev --target base "C:\Users\JoeTest\source\repos\VSEWebAppSample"
1>Sending build context to Docker daemon  2.471MB
1>
1>Step 1/4 : FROM microsoft/dotnet:2.1-aspnetcore-runtime AS base
1> ---> 40d759655ea3
1>Step 2/4 : WORKDIR /app
1> ---> Using cache
1> ---> f82084d08a44
1>Step 3/4 : EXPOSE 49718
1> ---> Using cache
1> ---> 22d65a07b772
1>Step 4/4 : EXPOSE 44315
1> ---> Using cache
1> ---> 1a6aecd0e9f1
1>Successfully built 1a6aecd0e9f1
1>Successfully tagged vsewebappsample:dev
1> C:\Users\JoeTest\.nuget\packages\microsoft.visualstudio.azure.containers.tools.targets\1.0.1916590\build\Container.targets(222,5): error CTC1003: Visual Studio container tools require Docker to be running.

В одной статье, которую я нашел, говорилось, что мне нужно обновить версию PowerShell, но я перешел по этой ссылке и был озадачен тем, какой вариант мне следует скачать. Буду признателен за любую оказанную помощь.

0 ответов

Другие вопросы по тегам