Wie greife ich auf die von Dockers HyperKit erstellte VM zu?

78

Docker für Mac verwendet eine von HyperKit erstellte Linux-VM zum Speichern und Ausführen von Containern auf einem Mac.

Mit Docker Toolbox kann ich einfach VirtualBox öffnen und auf die Docker-Maschinen-VM zugreifen. Wie kann ich mit Docker für Mac auf die von HyperKit erstellte VM zugreifen?

Jifeng Zhang
quelle

Antworten:

142

Update 2019-01-31, dank des Updates von ru10 gibt es jetzt einen besseren Weg:

screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty

Ursprüngliche Antwort:

Nach einer Weile fand ich folgenden Weg, um eine Shell der VM zu erhalten, die von HyperKit erstellt wurde:

Vom Terminal ausführen:

screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

Sie sehen einen leeren Bildschirm und geben die Eingabetaste ein. Sie erhalten eine Anmeldeaufforderung. Melden Sie sich an rootund drücken Sie die Eingabetaste. Sie erhalten eine Shell (kein Passwort)., Sie werden die Shell bekommen:

Geben Sie hier die Bildbeschreibung ein

Geben Sie zum Beenden der Sitzung Folgendes ein Ctrl-A k(und ybestätigen Sie dann).

Es ist ein bisschen hackig, aber es scheint vorerst zu funktionieren (September 2016) (September 2017).

Jifeng Zhang
quelle
1
Das ist für mich total kaputt. Ich kann eine Verbindung herstellen, aber mit den TERM-Einstellungen oder der Art und Weise, wie Daten weitergeleitet werden, stimmt etwas nicht. Ich erhalte eine nicht funktionierende Terminalsitzung, bei der Daten verloren gehen und die Formatierung nicht richtig ist. Ich versuche mehr Möglichkeiten, um die Sitzung zurückzusetzen, aber bisher fehlgeschlagen.
Gerry Gleason
für mich funktioniert es immer noch (Februar 2017 1.13.0-beta39 mit iterm2 Terminal Emulator)
Jauco
1
Sie brauchen dafür einen besseren Führer. Ich konnte Ihren Anweisungen folgen und in die VM gelangen. In meinem Fall führte mich das erste Drücken der Eingabetaste einfach zu einer shEingabeaufforderung für die VM. Als ich ls -lauf diesem ttyPfad lief, stellte sich heraus, dass es unter einen Link gab /dev/ttys001, der viel einfacher zu tippen ist.
Spencer Williams
Was können wir auf dieser Schnittstelle tun? Ich kann beispielsweise keinen Knoten ausführen. Ich habe ihn an eine andere Stelle kopiert, die nicht funktioniert hat.
Inanc Gumus
Oder kann ich eine Verbindung zu einem network_mode = Host-Container herstellen?
Inanc Gumus
47

Mac OS High Sierra Docker Version 18.06.0-ce-mac70 (26399)

screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty

anstatt

screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty
ru10
quelle
4
Danke für den aktualisierten Pfad. Die akzeptierte Antwort muss damit aktualisiert werden.
Gelassen
Hmm ... Ich erhalte ~/Library/Containers/com.docker.docker/Data/vms/0/ttystattdessen den Fehler "Berechtigung kann nicht ausgeführt werden " in MacOs Catalina und DFD v2.3.0.4
demisx
Dies ist auf einen Fehler zurückzuführen: github.com/docker/for-mac/issues/4822
lqbweb
7

Laut diesem GitHub-Problemkommentar eines Docker-Betreuers wird empfohlen, über einen privilegierten Docker-Container auf die VM zuzugreifen.

Versuchen Sie, sich bei der VM anzumelden: (Ich empfehle dies, anstatt den Bildschirm auf dem TTY zu verwenden.)

$ docker run -it --privileged --pid=host justincormack/nsenter1
Augurar
quelle
Das funktioniert bei mir, der Zugriff auf die Tty in Catalina nicht
Xenoterracide