Výchozí síť dockerového kontejneru má podobu mostu (ve stejné LAN jako hostitel, ale s použitím samostatné LAN IP), když program běží v produkčním prostředí, stačí nastavit odpovídající adresu služby pro připojení k databázi, redis atd.
V vývojovém prostředí, pokud služba běží v dockeru a databáze lokálně, není snadné použít 127.0.0.1.
To lze vyřešit dvěma způsoby.
Řešení 1:
Považujte hostitelský stroj a kontejner za dva samostatné stroje a při konfiguraci této adresy nastavte LAN IP hostitele nebo veřejnou IP.
Řešení 2:
Adresu hostitele napište přímo jako: host.docker.internal.Druhá metoda vyžaduje verzi dockeru větší než 18.03 a musí být dostupná na Windows a Mac。
Pro ověření, zda tyto dvě metody mohou přistupovat k hostiteli, můžete přímo spustit obraz pomocí dockeru a pingnout příkazovou řádku:
Jak můžete vidět na obrázku výše, přístup ke kontejnerůmhost.docker.internalMůžete přistupovat ke službě hostitele, když zkontrolujete soubor /etc/hosts, zjistíte, že neexistuje žádné přesměrování doménových jmen a neznáte konkrétní princip dockeru.
Jak hostitel, tak kontejner mohou přistupovat ke službám hostitele přes host.docker.internal, ale adresa vrácená příkazem ping je odlišná, a to následovně:
|