Verwenden Sie host.docker.internal unter Linux (Docker-Compose erforderlich)

TL;DR

Beschreiben Sie Folgendes in docker-compose.override.yaml

yaml:docker-compose.override.yaml


version: "3.5" # docker-compose.Match mit Yaml-Version

services:
  app: # host.docker.Dienstname, für den Sie intern verwenden möchten
    extra_hosts:
      - "host.docker.internal:172.101.0.1" #Entspricht der unten angegebenen Subnetzspezifikation

networks:
  default:
    driver: bridge
    ipam:
      config:
        - subnet: 172.101.0.0/16 #Geben Sie an, dass keine Überlappung mit anderen Netzwerken erfolgen soll

Firewall-Einstellungen

Wenn die Firewall ausgeführt wird, müssen Sie möglicherweise den Zugriff über das oben genannte Subnetz zulassen. Hier ist ein Befehlsbeispiel für firewalld.

sudo firewall-cmd --permanent --zone=trusted --add-source=172.101.0.0/16

host.docker.internal

Eine spezielle Domäne für den Zugriff auf das Host-Netzwerk von einem Container aus, die von Docker für Mac und Docker für Windows unterstützt wird. Da Mac zum Mainstream der Entwickler geworden ist, ist es einfach in Projekten zu verwenden, und Linux-Benutzer haben jedes Mal Probleme.

Support host.docker.internal DNS name to host Support host.docker.internal in dockerd on Linux [RFD] add configuration option to add host.docker.internal by default

Mit diesen Problemen wird host.docker.internal irgendwann unter Linux verfügbar sein, aber es wird einige Zeit dauern, bis es veröffentlicht wird, daher werde ich Workaround beschreiben. Der Arbeitsinhalt ist eher wie oben beschrieben, daher werde ich einen Kommentar schreiben.

docker-compose.override.yaml

Diese Datei wird automatisch gelesen, wenn Sie den Befehl docker-compose ausführen. Dies ist daher hilfreich, wenn Sie eigene Einstellungen schreiben, die Sie nicht in das Repository aufnehmen möchten. Es wird jedoch nicht automatisch gelesen, wenn Sie die Option -f verwenden. Daher müssen Sie auch diese Datei angeben.

extra_hosts

Fügen Sie den Inhalt zu / etc / hosts des Containers hinzu.

networks

Alle Container gehören zum Netzwerk mit dem Namen default, sofern nicht anders angegeben. Wenn Sie also die Einstellungen hier schreiben, werden sie automatisch in allen Containern angezeigt. Hier wird das Standardnetzwerk-Subnetz festgelegt. Normalerweise wird das Netzwerksubnetz automatisch ausgewählt, damit es sich nicht mit dem vorhandenen Netzwerk überschneidet. Dieses Mal möchte ich es jedoch reparieren, sodass ich es manuell auswähle und einstelle. Der Host gehört zu allen Netzwerken und seine IP scheint "das niedrigste Bit der Subnetzmaske ist auf 1 gesetzt" zu sein. (Ich habe eine solche Aussage in der Dokumentation nicht gefunden, nur weil ich sie ausprobiert und gesagt habe, dass dies der Fall ist. Vielleicht gibt es Fälle, in denen dies nicht der Fall ist.) Wenn Sie diese IP in extra_hosts angeben, können Sie eine Domain zuweisen.

Recommended Posts

Verwenden Sie host.docker.internal unter Linux (Docker-Compose erforderlich)
Verwenden Sie Github Desktop unter Linux
Verwenden Sie Linux unter Windows 10 (WSL2)
Verwenden Sie Linux-Befehle auf Android-Geräten
Verwenden Sie Numpy, Scipy, Scikit-Learn unter Amazon Linux
Ich möchte Linux auf dem Mac verwenden
Warum Linux verwenden?
Prozesse unter Linux dämonisieren
jblas unter Arch Linux
Verwendung von C216 Audio Controller unter Arch Linux
Linux (WSL) unter Windows
NAT-Router unter Linux
Verwenden Sie pyvenv unter Windows
Entwickeln Sie .NET unter Linux
Wake on Lan unter Linux
Vorbereiten der Verwendung von Ansible auf einem vorhandenen Linux-Server
Ich möchte OpenJDK 11 mit Ubuntu Linux 18.04 LTS / 18.10 verwenden
Überwachen Sie den Datenverkehr unter Linux
Aktualisieren Sie vscode unter Linux
Verwenden Sie Ansible unter Windows
Verwenden Sie QuTiP unter Windows
Verwenden Sie pip unter Windows
[Tipps] Verwendung des iPhone als Webkamera unter Linux
Erstellen Sie LiveUSB unter Linux
Linux-Betrieb unter Win10
[Für Anfänger] Verwendung der for-Anweisung unter Linux (Variablen usw.)
Wenn Sie python2.x unter modernem Gentoo Linux verwenden möchten
Was tun, wenn Sie unter Linux kein WLAN verwenden können?
NTP-Konfigurationsnotiz unter Linux
Installieren Sie Minecraft unter Arch Linux
Verwenden Sie matplotlib unter Ubuntu 12 und Python
Installieren Sie Linux auf Chromebox
Downgrade von Mcomix mit Arch Linux
Bis Docker-Compose auf CentOS7
Verwenden Sie music21 in Google Colaboratory
Überwachen Sie die Festplattennutzung unter Linux
Installieren Sie JDK unter Linux
Elixier = vertraut mit Linux Mint
Aufnahme und Wiedergabe unter Linux
TTL-Prüfung mit Linux-Router
Lesen Sie die Kernspannung unter Linux
Setzen Sie jenv in Amazon Linux ein
Einfacher Befehl df unter Linux
Linux unter Windows -1-: Einführung in Debian
Installieren Sie tomcat 5.5 unter Amazon Linux.
Einführung in Elixir in Linux Mint
Verwenden Sie matplot libwidget auf dem Mac
Verwenden Sie WDC-433SU2M2 mit Manjaro Linux
Installieren von Homebrew unter Amazon Linux 2
Fügen Sie den Link unter Linux ein
Verwenden Sie Python unter Windows (PyCharm)
Aufbau einer Linux-Umgebung (in einer WSL-Umgebung)
Verwenden Sie NeoPixel mit Himbeerkuchen
Ich möchte Shortcut-Übersetzungen wie die DeepL-App auch unter Linux verwenden