Domyślna sieć kontenera dockera ma formę mostu (w tej samej sieci LAN co host, ale z osobnym adresem IP LAN), gdy program działa w środowisku produkcyjnym, wystarczy skonfigurować odpowiadający mu adres usługi, aby połączyć się z bazą danych, redis itp.
W środowisku programistycznym, jeśli usługa działa w dockerze, a baza danych lokalnie, konfiguracja 127.0.0.1 nie jest łatwa w obsłudze.
Można to rozwiązać na dwa sposoby.
Rozwiązanie 1:
Traktuj maszynę i kontener jako dwie oddzielne maszyny i konfiguruj adres IP LAN hosta lub publiczny IP hosta podczas konfiguracji adresu.
Rozwiązanie 2:
Zapisz adres hosta bezpośrednio jako: host.docker.internal,Druga metoda wymaga wersji docker większej niż 18.03 i musi być dostępna na Windows i Mac。
Aby sprawdzić, czy te dwie metody mogą uzyskać dostęp do hosta, możesz bezpośrednio uruchomić obraz w dockerze, aby pingować wiersz poleceń:
Jak widać na powyższym obrazku, dostęp do kontenerówhost.docker.internalMożesz uzyskać dostęp do usługi hosta, sprawdzając plik /etc/hosts, zobaczysz, że nie ma przekierowania nazw domen i nie znasz konkretnej zasady dockera.
Zarówno host, jak i kontener mogą uzyskać dostęp do usług hosta przez host.docker.internal, ale adres zwracany przez polecenie ping jest inny, w następujący sposób:
|