Docker für Mac VM IP

8

Ich habe gerade die Verwendung von Docker für Mac migriert, nachdem ich zuvor Docker Toolbox mit virtualbox für OSX verwendet habe.

Ich habe die IP Adresse der Maschine mit $(docker-machine ip default) bekommen.

Gibt es eine zuverlässige Möglichkeit, die Hyperkit-IP-Adresse zu erhalten?

Danke!

    
mac 21.12.2016, 16:15
quelle

4 Antworten

8
___ qstntxt ___

Ich habe gerade die Verwendung von Docker für Mac migriert, nachdem ich zuvor Docker Toolbox mit virtualbox für OSX verwendet habe.

Ich habe die IP Adresse der Maschine mit docker-machine bekommen.

Gibt es eine zuverlässige Möglichkeit, die Hyperkit-IP-Adresse zu erhalten?

Danke!

    
___ answer47058880 ___

Meine aktuelle Lösung besteht darin, die Container mithilfe von Docker Machine (einer Linux-VM, die unter einer anderen IP-Adresse verfügbar ist) zu erstellen und den gesamten Datenverkehr der Container an die Docker-VM weiterzuleiten.

%Vor%

Sie können den Netzwerkbereich Ihrer Andockcontainer mit localhost und die IP-Adresse Ihrer Dockercomputer-VM mit -p

ermitteln     
___ tag123macos ___ macOS (früher bekannt als OS X oder Mac OS X) ist das Desktop-Betriebssystem von Apple, das auf Macintosh-Computern gefunden wurde. Verwenden Sie dieses Tag nur, wenn sich Ihre Frage auf die Verwendung von macOS-APIs oder Mac OS-spezifischem Verhalten bezieht, nicht weil Sie Ihren Code auf macOS ausführen. Fragen zur Verwendung oder Fehlerbehebung von macOS sind off-topic. ___ answer41475171 ___

Im Gegensatz zur Docker Toolbox haben Docker für Windows und Docker für Mac das Gefühl, Docker wird direkt auf Ihrem Betriebssystem ausgeführt. Daher werden virtuelle, schlanke Maschinen verwendet, die unter leichtgewichtigen Hypervisoren ausgeführt werden (anstelle von VirtualBox ) und direkt von der ausführbaren Datei docker ausgeführt werden Daher werden sie nicht mit docker-machine angezeigt und Sie sehen keine andere IP-Adresse als localhost .

Docker für Windows basiert auf dem HyperV Hypervisor, der eine Netzwerkverbindung zu $ docker run -p 80:80 -d nginx ermöglicht.

Docker für Mac basiert auf dem xhyve Hypervisor, dessen Implementierung nur eine Verbindung über den Socket localhost bereitstellt.

Abhilfe

So stellen Sie eine TCP-Verbindung für Docker für Mac bereit:

  1. Installieren Sie socat . Mit brauen :

    %code%

  2. Führen Sie diesen socat Befehl aus, um TCP Anfragen an den Socket weiterzuleiten

    %code%

  3. Ordnen Sie auf %code%

  4. , was Sie wollen

Sie müssen den socat -Befehl beim Start gegebenenfalls ausführen.

Dies war zum Beispiel für mich nützlich, um den Webstorm nodeJS Debugger mit einem nodeJS Container zu verbinden (seit dem Schreiben docker debugging wird von Webstorm Docker Integration Plugin unterstützt, aber nicht über Unix-Sockets).

Dokumentation zu Einschränkungen von Docker für Mac

Ссылка

  

Es gibt keine docker0 Bridge auf macOS

     

Aufgrund der Art und Weise, in der das Netzwerk in Docker für Mac implementiert ist, können Sie in macOS keine docker0-Schnittstelle sehen. Diese Schnittstelle befindet sich tatsächlich in HyperKit.

    
___ tag123docker ___ Docker bietet eine High-Level-API, um Prozesse und Anwendungen mit einem gewissen Maß an Isolation und Wiederholbarkeit auf Servern zu containern. Docker unterstützt sowohl Linux- als auch Windows-Container. ___ tag123dockermachine ___ docker-machine erstellt Docker Engines auf Ihrem Computer, bei Cloud-Anbietern und / oder in Ihrem Rechenzentrum und konfiguriert dann den Docker-Client so, dass er sicher mit ihnen kommuniziert. ___ answer42525136 ___

Sie könnten docker image für socat verwenden, das jedes Mal startet, wenn Sie 'docker for mac' starten

  

docker run -d --restart = immer -p 2376: 2375 -v   /var/run/docker.sock:/var/run/docker.sock bobrik / socat   TCP4-LISTEN: 2375, fork, reuseaddr UNIX-CONNECT: /var/run/docker.sock

Suchen Sie Ihre Docker-API-IP-Adresse:

%Vor%     
___ qstnhdr ___ Docker für Mac VM IP ___
helmbert 21.12.2016, 22:02
quelle
16

Im Gegensatz zur Docker Toolbox haben Docker für Windows und Docker für Mac das Gefühl, Docker wird direkt auf Ihrem Betriebssystem ausgeführt. Daher werden virtuelle, schlanke Maschinen verwendet, die unter leichtgewichtigen Hypervisoren ausgeführt werden (anstelle von VirtualBox ) und direkt von der ausführbaren Datei docker ausgeführt werden Daher werden sie nicht mit docker-machine angezeigt und Sie sehen keine andere IP-Adresse als localhost .

Docker für Windows basiert auf dem HyperV Hypervisor, der eine Netzwerkverbindung zu tcp://localhost:2375 ermöglicht.

Docker für Mac basiert auf dem xhyve Hypervisor, dessen Implementierung nur eine Verbindung über den Socket unix:///var/run/docker.sock bereitstellt.

Abhilfe

So stellen Sie eine TCP-Verbindung für Docker für Mac bereit:

  1. Installieren Sie socat . Mit brauen :

    brew install socat

  2. Führen Sie diesen socat Befehl aus, um TCP Anfragen an den Socket weiterzuleiten

    socat TCP-LISTEN:2375,reuseaddr,fork,bind=localhost UNIX-CONNECT:/var/run/docker.sock

  3. Ordnen Sie auf tcp://localhost:2375

  4. , was Sie wollen

Sie müssen den socat -Befehl beim Start gegebenenfalls ausführen.

Dies war zum Beispiel für mich nützlich, um den Webstorm nodeJS Debugger mit einem nodeJS Container zu verbinden (seit dem Schreiben docker debugging wird von Webstorm Docker Integration Plugin unterstützt, aber nicht über Unix-Sockets).

Dokumentation zu Einschränkungen von Docker für Mac

Ссылка

  

Es gibt keine docker0 Bridge auf macOS

     

Aufgrund der Art und Weise, in der das Netzwerk in Docker für Mac implementiert ist, können Sie in macOS keine docker0-Schnittstelle sehen. Diese Schnittstelle befindet sich tatsächlich in HyperKit.

    
arvymetal 04.01.2017 23:52
quelle
4

Sie könnten docker image für socat verwenden, das jedes Mal startet, wenn Sie 'docker for mac' starten

  

docker run -d --restart = immer -p 2376: 2375 -v   /var/run/docker.sock:/var/run/docker.sock bobrik / socat   TCP4-LISTEN: 2375, fork, reuseaddr UNIX-CONNECT: /var/run/docker.sock

Suchen Sie Ihre Docker-API-IP-Adresse:

%Vor%     
jaanus 01.03.2017 06:56
quelle
1

Meine aktuelle Lösung besteht darin, die Container mithilfe von Docker Machine (einer Linux-VM, die unter einer anderen IP-Adresse verfügbar ist) zu erstellen und den gesamten Datenverkehr der Container an die Docker-VM weiterzuleiten.

%Vor%

Sie können den Netzwerkbereich Ihrer Andockcontainer mit docker inspect und die IP-Adresse Ihrer Dockercomputer-VM mit docker-machine ip

ermitteln     
Abimbola Esuruoso 01.11.2017 15:57
quelle

Tags und Links