Docker для Windows 7 с интеграцией Visual Studio 2017 - PullRequest
0 голосов
/ 03 октября 2018

Моя цель - создать среду разработки с докером и 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 это дистрибутив Linux, и, следовательно, я могу использовать только .NETядро и ядро ​​ASP.NET. Если я не могу получить собственный экземпляр Docker, возможно ли иметь компьютер с Windows Boot2Docker, чтобы я мог использовать на нем все .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, но я перешел по этой ссылке и был озадачен тем, какой вариант загрузить.,Любая помощь очень ценится.

...