Beim Versuch, eine Entwicklungsumgebung für VS Code + Remote-Container auf einem Mac einzurichten, ist ein Fehler in Docker Desktop für Mac aufgetreten.
--Docker startet nicht unter Docker Desktop für Mac Stable Version (2.1.0.5) unter MacOS Catalina
--Docker startet in der Edge-Version (2.1.7.0), aber der Prozess von com.docker.hyperkit
bleibt bei 100% CPU (Fans brüllen)
Wenn man sich das Problem auf GitHub ansieht, startet Docker nicht und der Prozess-Runaway-Fehler hat lange gedauert und es ist keine Verbesserung in der Zukunft zu erwarten.
Darüber hinaus beschreibt die VS-Code-Dokumentation auch einen Prozessfehler.
Nach einigem Ausprobieren habe ich beschlossen, Docker auf dem Mac nicht mehr auszuführen, Docker auf einem Linux-Server auszuführen und eine Umgebung zu suchen, in der eine Remoteverbindung hergestellt werden kann. Die Standardeinstellung von Remote-Containern startet den Container jedoch in der lokalen Docker-Umgebung. Daher habe ich nach einer Möglichkeit gesucht, eine Verbindung zum Remote-Server herzustellen, und dies erkannt.
Die Erläuterung zur Einführung und Einstellung von VS-Code und -Erweiterungen entfällt.
Es wird unter dem Titel "Entwickeln in einem Container auf einem Remote-Docker-Host" beschrieben.
Es ist einfach einzurichten, fügen Sie einfach die Zeile "docker.host" zu "settings.json" hinzu und starten Sie VS Code neu.
** Einstellungsbeispiel für settings.json
**
"docker.host": "ssh://[email protected]"
Da für die SSH-Verbindung zum Remote-Server eine Schlüsselauthentifizierung erforderlich ist, legen Sie diese fest.
Klicken Sie hier, um die Dokumentation der SSH-Einstellungen in VS Code anzuzeigen.
Sobald die Schlüssel sowohl auf dem Server als auch auf dem Client bereit sind, konfigurieren Sie die VS-Code-Einstellungen.
In VS Code, run Remote-SSH: Open Configuration File... in the Command Palette (F1), select the SSH config file you wish to change, and add (or modify) a host entry in the config file as follows to point to the file:
Tatsächlich handelt es sich um eine SSH-Konfigurationseinstellung, sodass es kein Problem zu geben scheint, selbst wenn Sie sie direkt ändern. Geben Sie die Schlüsselposition an, indem Sie die Zeile "IdentityFile" hinzufügen.
** ~ / .ssh / config Einstellungsbeispiel **
Host 192.168.1.60
HostName 192.168.1.60
User root
IdentityFile ~/.ssh/id_rsa
Sie können jetzt mit Remote-Containern eine direkte Verbindung zum Container auf dem Remote-Server herstellen. Es scheint eine andere Methode zu geben, die das TCP-Protokoll als das SSH-Protokoll verwendet, die jedoch nicht überprüft wurde.
Forward Port Unmittelbar nach dem Start von Remote-Containern werden das lokale Terminal und der Container auf dem Remote-Server isoliert, sodass keine direkte Verbindung zum Port im Container hergestellt werden kann. Fügen Sie daher Forward Port hinzu, um den Port des lokalen Terminals an den Port im Container zu übertragen.
Remote-Container: Port vom Container weiterleiten ...
.http: // localhost: XXXX
her. (Wenn Sie localhost in Safari auf dem Mac angeben, tritt ein Fehler auf, sodass Sie eine Verbindung herstellen können, indem Sie ihn durch 127.0.0.1 ersetzen.)Publish Port Wenn es schwierig ist, den Weiterleitungsport bei jedem Start des Containers festzulegen, legen Sie den Veröffentlichungsport fest und legen Sie fest, dass der Port beim Starten des Containers immer weitergeleitet wird.
addPort
zu devcontainer.json
hinzu und geben Sie den Port an.Remote-Container: Container neu erstellen
. Erstellen Sie den Container neu.http: // remote server IP oder FQDN: XXXX
her** Beispiel für die Einstellung von "devcontainer.json" (Docker: 9000, Container: 5000) **
"appPort": ["9000:5000"],
Wenn im obigen Beispiel "Docker ps" ausgeführt wird, wird "PORTS" der Zielcontainer-ID zu "0.0.0.0:9000-> 5000 / tcp".
Mit VS Code konnten wir eine nahtlose Containerentwicklungsumgebung erstellen. Sie müssen nur VS-Code auf Ihrem lokalen Terminal vorbereiten und benötigen nicht einmal einen Docker. Es ist eine Bedingung, dass der Remote-Server gestartet wird und immer eine Netzwerkverbindung erforderlich ist, aber ich denke, dass eine stressfreie Entwicklungsumgebung in dem Maße erstellt wurde, in dem genügend Änderungen eintreten. Bitte beachten Sie die Containerentwicklung mit Remote-Containern.
Recommended Posts