Rețeaua implicită a containerului docker este sub forma unui bridge (în același LAN ca gazda, dar folosind un IP LAN separat), când programul rulează în mediul de producție, trebuie doar să configurezi adresa serviciului corespunzătoare pentru a se conecta la baza de date, redis, etc.
Într-un mediu de dezvoltare, dacă serviciul rulează în docker și baza de date rulează local, configurarea 127.0.0.1 nu este ușor de folosit.
Acest lucru poate fi rezolvat în două moduri.
Soluția 1:
Tratați mașina gazdă și containerul ca două mașini separate și configurați IP-ul LAN sau IP-ul public al gazdei când configurați adresa.
Soluția 2:
Totuși, scrie adresa gazdei direct ca: host.docker.internalA doua metodă necesită o versiune de docker mai mare de 18.03 și trebuie să fie disponibilă pe Windows și Mac。
Pentru a testa dacă aceste două metode pot accesa gazda, poți rula direct o imagine cu docker pentru a face ping liniei de comandă:
După cum se vede din imaginea de mai sus, accesul containeruluihost.docker.internalPoți accesa serviciul gazdei, verificând fișierul /etc/hosts, vei vedea că nu există redirecționare a numelui de domeniu și nu cunoști principiul specific de bază al docker.
Atât gazda, cât și containerul pot accesa serviciile gazdei prin host.docker.internal, dar adresa returnată de comanda ping este diferită, după cum urmează:
|