it-swarm.com.de

So bringen Sie die Docker Toolbox dazu, mit dem .NET Core 2.0-Projekt zusammenzuarbeiten

Beim Versuch, die Docker-Funktionalität mit meinem .NET Core 2.0-Projekt zu verwenden, wird eine Fehlermeldung angezeigt. Ich habe eine Fehlermeldung erhalten

Für Visual Studio Container Tools muss Docker ausgeführt werden, bevor ein containerisiertes Projekt erstellt, debuggt oder ausgeführt wird. Weitere Informationen finden Sie unter: http://aka.ms/DockerToolsTroubleshooter

Ich folgte dem Link und als mir klar wurde, dass ich Windows 10 Home x64 habe, musste ich Docker Toolbox anstelle von Docker für Windows installieren. Nun hat es diese ausführbare Datei namens installiert

Docker-Schnellstart-Terminal

Soll man so die Docker-Dienste starten? Ich habe versucht, diese ausführbare Datei auszuführen, und es scheint zu funktionieren. Meine Container werden ausgeführt, aber der Fehler für Visual Studio Container Tools bleibt weiterhin bestehen.

Was vermisse ich? Ist eine höhere Windows-Version als Home erforderlich, um die Docker Container-Unterstützung in Visual Studio 2017 nutzen zu können?

AKTUALISIEREN:

Ich habe versucht, dem Vorschlag von Quetzcoatl zu folgen, und im Visual Studio wird immer noch derselbe Fehler bezüglich dieser Tools angezeigt. Folgendes habe ich im Docker-Schnellstart-Terminal ausgeführt. Ich habe versucht, das Projekt zu erstellen, nachdem Visual Studio das Projekt erfolgreich geöffnet hat, und es wurde immer noch der oben genannte Fehler in Bezug auf die Container-Tools angezeigt.

Meine devenv.exe-Datei befindet sich an

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

und meine Lösungsdatei befindet sich unter

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

enter image description here

UPDATE 2:

Ich habe einige der vorgeschlagenen Befehle ausgeführt, um sie im Docker-Schnellstart-Terminal zu testen. Hier sind die Ergebnisse dieser Befehle: quetz enter image description here

28
ddeamaral

Mit Docker Toolbox ist das ein bisschen knifflig, aber eigentlich hat der Core-2.0 hier nichts zu tun. Alles dreht sich um Docker, Docker-Toolbox und VS.

Als allererstes:

Soll man so die Docker-Dienste starten? Ich habe versucht, diese ausführbare Datei auszuführen, und es scheint zu funktionieren.

Ja ist es. Wenn Docker-Maschinen/-Dienste ausgeführt werden - das ist gut!

Jetzt müssen Sie feststellen, dass im Docker normalerweise die Informationen darüber, wie/wo der Docker ausgeführt wird, in mgebungsvariablen gespeichert sind. Das Skript quickstart startet nicht nur die Docker-Maschine für Sie und prüft einige grundlegende Dinge, sondern richtet auch einige Umgebungsvariablen ein, damit später alle Befehle wie docker, docker-compose etc wissen, wo nach der virtuellen Docker-Maschine gesucht werden muss. In Ihrem/unserem Fall besteht diese Information hauptsächlich aus einer IP der VM und einer Portnummer, die Docker abhört.

.. und Ihr Visual Studio hat keine Kenntnis davon, denn ich wette, Sie haben VisualStudio über StartMenu oder das Desktopsymbol oder durch Doppelklicken auf eine Lösungsdatei ausgeführt, sodass es keine Chance hatte, die Umgebungsvariablen abzurufen von der quickstart Konsole.

Die Lösung ist ganz einfach: Stellen Sie sicher, dass VS diese Informationen erhält. Das heißt, stellen Sie sicher, dass Umgebungsvariablen abgerufen werden. nd Stellen Sie sicher, dass der Status frisch angezeigt wird, da die IP/der Port manchmal schwanken kann. Kopieren Sie sie also nicht einfach in Ihre Betriebssystemeinstellungen, da sie sonst nie automatisch aktualisiert werden.

Die einfachste Möglichkeit, die ich gefunden habe, besteht darin, Visual Studio zu schließen, die Docker-Toolbox-Schnellstartkonsole auszuführen und dann VisualStudio von dieser Konsole aus auszuführen, z. B. für meine 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

Der Pfad ist ziemlich lang, auch mit TAB-Vervollständigung. Erstellen Sie daher normalerweise ein winziges .sh Skript, um das für mich auszuführen.

Übrigens! Beachten Sie, dass der Pfad zu DEVENV unixartig sein muss (/c/Program\ Files...), weil die mingw-Shell das verstehen muss, während der Pfad zu SOLUTION ein normaler Windows-Pfad sein muss (c:\projects\foo\bar\..), da VisualStudio versucht, dies nach dem Start zu lesen.

18
quetzalcoatl

Das habe ich gemacht, um im Vergleich zu 2017 Windows 10 Home mit Docker-Toolbox zum Laufen zu bringen. Sie folgen diesem und ich garantiere, dass es funktioniert. Beachten Sie, dass dies nur für Windows 10 Home gilt, das native Docker für Windows-Anwendungen nicht unterstützt:

  1. Installieren Sie die Docker-Toolbox auf w10 home

  2. Führen Sie das Docker-QuickStart-Terminal einmal aus, um den Docker-Computer zu erstellen. Es dauert eine Weile. Seien Sie also geduldig, während es die IP-Adresse und andere Dinge zuweist

  3. Sobald dies erledigt ist, wird eine Eingabeaufforderung angezeigt. Geben Sie "docker-machine ip default" ein. Notieren Sie sich die IP-Adresse, die Sie später benötigen werden

  4. Schließen Sie das QuickStart-Terminalfenster. Das war nur, um das boot2docker.iso-Image eines winzigen Ubuntu-Linux-Servers in der Virtualbox-App (alias Docker-Maschine alias Standard-VM) zu initialisieren. Wenn Sie nicht mit der Virtualisierungstechnologie oder Oracle VirtualBox vertraut sind, lesen Sie diese zuerst nicht weiter und beginnen Sie dann von vorne. Aber wenn doch, dann mache gerne weiter

  5. Wie bereits erwähnt, handelt es sich bei Ihrer Docker-Maschine-Instanz um eine Linux-VM. Daher ist es offensichtlich, dass Sie nur Projekte öffnen können, die mit der .net-Kerntechnologie erstellt wurden. Leider müssen Sie für ein vollständiges .net-Framework entweder Windows-Container ausführen, die nur unter Windows 10 Pro verfügbar sind, oder Ihren eigenen Windows Nano-Server oder Server 2016 VM auf virtualbox erstellen und dann die Schritte für den nativen Docker für Windows auf der Docker-Website ausführen und befolgen . Ab hier ist der Rest dieser Antwort hilfreich für diejenigen, die Kernprojekte nur unter Linux vm/docker-machine ausführen möchten

  6. Öffnen Sie Windows Power Shell im Administratormodus und geben Sie "docker-machine ls" ein, um zu bestätigen, dass die Standard-VM ausgeführt wird. Kann auch "Docker-Status Standard" ausführen und sollte "Laufen" zurückgeben

  7. Öffnen Sie nun die Virtualbox-Anwendung, in der Ihr Standard-VM ausgeführt wird, und klicken Sie auf Einstellungen. Öffnen Sie die Registerkarte "Freigegebene Laufwerke", auf der Sie sicherstellen müssen, dass der Ordner "c:\Users" auf dem Host-Computer im VM als "c/Users" -Ordner zugeordnet/bereitgestellt ist. Beachten Sie, dass dieser Schritt sehr wichtig ist und das Fehlen dieses Schritts zu großen Problemen bei der erfolgreichen Ausführung führt

  8. Beachten Sie auch, dass Ihre Lösung/Ihr Projekt/Ihre Codebasis MUSS unter "c:\Users \" gespeichert sein, damit sie ordnungsgemäß funktioniert. Dies ist, wenn Sie es OOTB verwenden möchten. Ich wollte keine Zeit damit verschwenden, einen Ordner außerhalb des zulässigen Pfads bereitzustellen. Aber wenn Sie abenteuerlustig sind, versuchen Sie es auf jeden Fall herauszufinden und lassen Sie uns wissen, wie Sie es gemacht haben

  9. Nun, wie Quetzalcoatl richtig erwähnte, muss vs über diese Docker-Maschine Bescheid wissen. Der einzige Weg ist, wenn die Umgebungsvariablen gesetzt sind. Führen Sie daher den Befehl "docker-machine env default | Invoke-Expression ’im Powershell-Fenster. Dies ist die magische Sauce, die es schafft, sich mit Docker-Maschinen gut zu verhalten

  10. Fahren Sie fort und öffnen Sie vs normal, indem Sie entweder auf Ihre Projektlösung doppelklicken oder ein neues Projekt/eine neue Lösung erstellen. Verwenden Sie in Powershell den Befehl 'start', um Ihre vorhandene vs-Lösung oder eine neue vs-Instanz zu öffnen. Tipp: Wenn Sie eine neue Lösung erstellen, wählen Sie die Option Linux Docker zum Zeitpunkt der Auswahl des Projektvorlagentyps NICHT aus. Sie können die Docker-Unterstützung vollständig hinzufügen, sobald Ihre Lösung vollständig eingerichtet und einsatzbereit ist. Tatsache ist, lassen Sie es deaktiviert und lassen Sie vs Ihre Lösung erstellen. Auf diese Weise können Sie Ihre Lösung in den Modi IIS Express oder Self-Hosted erstellen und ausführen, um festzustellen, ob Ihr Core2.0 überhaupt ordnungsgemäß funktioniert

  11. Sobald Sie sich davon überzeugt haben, dass alles funktioniert hat und Sie die OOTB= Homepage gesehen haben, ist es Zeit, Docker-Unterstützung hinzuzufügen, indem Sie auf Ihr Projekt klicken, den Mauszeiger über Hinzufügen halten und dann auf 'Docker-Unterstützung hinzufügen' klicken Erstellen Sie ein neues Docker-Projekt (.dcproj) und fügen Sie eine Reihe von Docker-bezogenen Dateien hinzu

  12. Jetzt werde ich hier nicht mehr auf Docker eingehen, aber Sie werden feststellen, dass Ihr Projekt nicht mehr der Start ist und das neu erstellte Docker-Projekt. Das ist ein ganz normales und beabsichtigtes Verhalten. Dies bedeutet, dass Sie eingerichtet und bereit sind, Ihre App mithilfe von Docker-Containern zu starten. Klicken Sie auf die Schaltfläche "Docker", um zu sehen, wie sich Ihre harte Arbeit auszahlt. Seien Sie erneut geduldig, da das Erstellen von Images und das Hochfahren von Containern einige Zeit in Anspruch nimmt. Sobald dies abgeschlossen ist, wird das vs gestartet und der Debugger angehängt

  13. Hier werden Sie erneut enttäuscht und fühlen sich wertlos, da beim Öffnen eines neuen Fensters oder einer neuen Registerkarte durch den Browser ein nicht erreichbarer Seitenfehler auftritt. Der Grund ist, dass die Browseradresse auf localhost verweist, der nicht mehr der Webserver ist. Ihr "Webserver" ist jetzt Ihr Docker-Container. Daher müssen Sie localhost durch die oben abgerufene IP-Adresse ersetzen. Die Portnummer bleibt unverändert. Sobald Sie die Seite eingereicht haben, werden Sie erleichtert und begeistert sein, die Homepage/Routenarbeit zu sehen. Dies sollte auch das Debuggen in ermöglichen. Sollte dies aus irgendeinem Grund nicht der Fall sein, müssen Sie möglicherweise einen Ordner mit dem Namen ".vsdbg" in "c:\Users \" löschen und die Anwendung erneut ausführen.

13
BRBdot