Как заставить панель инструментов docker работать с проектом .net core 2.0

Я получаю сообщение об ошибке, пытаясь использовать функциональность Docker с моим проектом .NET core 2.0. Я получил сообщение об ошибке

Контейнер Visual Studio требует, чтобы Docker запускался раньше создание, отладка или запуск контейнерного проекта. Для получения дополнительной информации, см. ниже: http://aka.ms/DockerToolsTroubleshooting

Я пошел по ссылке, и, поняв, что у меня Windows 10 Home x64, мне пришлось установить Docker Toolbox вместо Docker для Windows. Теперь он установил этот исполняемый файл под названием

Быстрый старт-терминал Docker

Так ли это, как предполагается, запускать докеры? Я попытался запустить этот исполняемый файл, и, похоже, он работает. Мои контейнеры запущены, но ошибка для Visual Studio Container Tools по-прежнему сохраняется.

Что мне не хватает? Имеет ли версия Windows выше, чем Home, чтобы использовать поддержку Docker Container в Visual Studio 2017?

UPDATE:

Я попытался выполнить предложение Quetzcoatl, и я все еще получаю ту же ошибку в визуальной студии об этих инструментах. Вот что я запустил в Docker Quick Start Terminal. Я попытался создать проект после того, как Visual Studio успешно открыл проект и все еще получал вышеупомянутую ошибку в отношении инструментов контейнера.

Мой файл 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, и вот результаты этих команд: quetz введите описание изображения здесь

Ответ 1

С Docker Toolbox, немного сложным, но на самом деле ядро-2.0 здесь нечего делать. Это все о докерах, докер-инструментах и ​​VS.

Прежде всего:

Так ли это, как предполагается, запускать докеры? Я попытался запустить этот исполняемый файл и, похоже, работает.

Да, это так. Если работает докер-машина/службы - это хорошо!

Теперь вы должны понять, что в докере, как правило, информация о том, как/где работает докер, хранится в переменных окружения. quickstart script не только запускает докер-машину для вас и проверяет некоторые основные вещи, но также устанавливает пару переменных окружения, чтобы позже все команды, такие как docker, docker-compose и т.д., Знали, где искать виртуальная машина докера. В вашем/нашем случае эта информация в основном состоит из IP-адреса виртуальной машины и номера порта, который прослушивает Docker.

.. и ваша Visual Studio не знает об этом, потому что, я уверен, вы запустили VisualStudio из StartMenu или с рабочего стола или дважды щелкнули файл решения, так что у него не было шансов получить переменные среды из консоли quickstart.

Решение довольно просто: убедитесь, что VS получает эту информацию. То есть убедитесь, что он получает переменные среды, и, чтобы убедиться, что он получает состояние fresh, потому что иногда IP/порт может меняться. Поэтому не просто скопируйте их в настройки вашей ОС, потому что ничто не будет автоматически обновлять их.

Самый простой способ - просто закрыть Visual Studio, запустить консоль быстрого запуска docker toolbox, затем запустить VisualStudio с этой консоли, например, для моего VS2017 Community Edition:

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
[email protected] MINGW32 ~
$ /c/Program\ Files\ \(x86\)/Microsoft\ Visual\ Studio/2017/Community/Common7/IDE/devenv.exe C:\\PATH\\TO\\MY\\SOLUTION.sln

Путь довольно длинный для записи, даже при завершении TAB, поэтому обычно выполняйте для него это маленькое .sh script.

КСТАТИ! Обратите внимание, что путь к DEVENV должен быть unix-like (/c/Program\ Files...), потому что оболочка mingw должна понимать это, в то время как путь к РЕШЕНИЮ должен быть обычным стеком Windows (c:\projects\foo\bar\..), потому что VisualStudio попытается прочитать это после запуск.

Ответ 2

Это то, что я сделал, чтобы получить vs 2017, работая над Windows 10 с помощью docker-toolbox. Вы следуете за этим, и я гарантирую, что он сработает. Обратите внимание, что это относится только к Windows 10 home, который не поддерживает встроенный докер для приложений Windows:

  • Установите docker-toolbox на w10 home

  • Запустите докер-терминал QuickStart один раз, чтобы создать докер-машину. Это требует времени. Поэтому будьте терпеливы, пока он назначает IP-адрес и другие вещи.

  • После его выполнения вы увидите командную строку. Тип "докер-машина" ip по умолчанию. Запишите IP-адрес, как вам понадобится позже.

  • Закройте окно терминала QuickStart. Это было просто для инициализации образа boot2docker.iso крошечного Linux-сервера Ubuntu в приложении virtualbox (ака-докер-машина aka default vm). Если вы не знакомы с технологией виртуализации или виртуальным окном oracle, прекратите чтение и сначала прочитайте их, а затем начните. Но если вы это сделаете, то с радостью продолжайте

  • Как я уже говорил, ваш экземпляр docker-machine - это Linux vm, и поэтому очевидно, что вы можете открывать только проекты, созданные с использованием технологии ядра .net. К сожалению, для полной инфраструктуры .net вам также нужно будет запускать контейнеры Windows, которые доступны только для Windows 10 pro или для сборки собственного окна nano-сервера или сервера v6 сервера v6 на виртуальном боксе, а затем используйте шаги и выполните шаги для встроенного докера для окон на веб-сайте докеров. Отсюда оставшаяся часть этого ответа будет полезна тем, кто хочет запускать основные проекты только на Linux vm/docker-machine

  • Откройте оболочку силовой оболочки Windows в режиме администратора и введите "docker-machine ls", чтобы подтвердить, что vm vm запущен. Также можно выполнить статус "докер-машина" по умолчанию, и он должен возвращать "running

  • Теперь откройте приложение virtualbox, которое запускает vm по умолчанию и нажимает на настройки. Откройте вкладку "общие диски", где вам нужно убедиться, что папка c:\Users на хост-машине сопоставлена ​​/монтируется как папка c/Users в vm. Обратите внимание, что этот шаг очень важен и отсутствует, это вызовет много проблем с его успешной работой.

  • Также обратите внимание на то, что ваше решение /project/codebase MUST будет сохранено в разделе "c:\Users", чтобы он работал правильно. Это если вы хотите использовать его OOTB. Я не хотел тратить время, пытаясь установить папку за пределами допустимого пути. Но если вы приключенческий вид, пожалуйста, непременно попытайтесь понять это и сообщите нам, как вы это делали.

  • Теперь, как правильно сказал Кетцалькоатль, vs должен знать об этой докер-машине. Единственный способ, который происходит, - это установить переменные среды. Поэтому идите и запустите эту команду "docker-machine env deault" | Invoke-Expression в окне powershell. Это волшебный соус, способный вести себя хорошо с докер-машиной.

  • Идем дальше и открываем vs обычно либо с помощью dbl, нажимая ваше решение по проекту, либо создавая новый проект/решение. В Powershell используйте команду "start", чтобы открыть существующее vs-решение или новый экземпляр vs. Pro-tip: если вы создаете новое решение, НЕ выбирайте вариант док-станции Linux во время выбора типа шаблона проекта. Вы можете полностью добавить поддержку докеров, как только ваше решение будет настроено и готово к работе. На самом деле оставить его непроверенным и позволить vs создать ваше решение. Таким образом, у вас будет возможность создать и запустить решение в режимах IIS Express или Self-hosts, чтобы убедиться, что ваш Core2.0 работает нормально

  • После того как вы удовлетворены тем, что все работает, и вы увидели на домашней странице OOTB свое время, чтобы добавить поддержку докеров, щелкнув по вашему проекту, нависая над "Добавить", а затем нажав "Добавить поддержку докеров". Это создаст новый проект docker (.dcproj) и добавит кучу файлов, связанных с докерами.

  • Теперь я не собираюсь входить в nitty gritty docker здесь, но вы заметите, что ваш проект больше не является стартовым, а недавно созданный проект докеров. Это совершенно нормальное и предполагаемое поведение. Это означает, что вы настроены и готовы запустить ваше приложение с помощью докеров. Итак, продолжайте и нажмите кнопку "Docker", чтобы увидеть, как ваша тяжелая работа наконец окупится. Снова будьте терпеливы, так как требуется некоторое время для создания изображений и разворачивания контейнеров, но как только это будет сделано, vs запустится и прикрепит отладчик

  • Здесь вы снова будете разочарованы и почувствуете себя бесполезными, потому что, когда браузер откроет новое окно или вкладку, будет недостижимая ошибка страницы. Причина в том, что адрес веб-браузера указывает на localhost, который больше не является веб-сервером. Ваш "веб-сервер" теперь является вашим контейнером докеров, поэтому вам нужно заменить localhost на ip-адрес, который вы получили выше. Номер порта остается как есть. После того, как вы отправите страницу, вы будете в восторге от восторга, чтобы увидеть домашнюю страницу/работу по маршруту. Это также должно включать отладку по сравнению с тем, если по какой-то причине не требуется, то вам может понадобиться удалить папку с именем .vsdbg в папке c:\Users\и повторно запустить приложение.