Standardnettverket til docker-containeren er i form av en bro (i samme LAN som verten, men med en egen LAN-IP), når programmet kjører i produksjonsmiljøet, trenger du bare å konfigurere den tilsvarende tjenesteadressen for å koble til databasen, redis osv.
I et utviklingsmiljø, hvis tjenesten kjører i docker og databasen kjører lokalt, er det ikke lett å konfigurere 127.0.0.1.
Dette kan løses på to måter.
Løsning 1:
Behandle vertsmaskinen og containeren som to separate maskiner, og konfigurer vertens LAN-IP eller offentlige IP når du konfigurerer adressen.
Løsning 2:
Skriv vertsadressen direkte som: host.docker.internal, menDen andre metoden krever docker-versjon større enn 18.03 og må være tilgjengelig på Windows og Mac。
For å teste om disse to metodene kan få tilgang til verten, kan du kjøre et bilde direkte med docker for å pinge kommandolinjen:
Som du kan se på bildet over, containertilganghost.docker.internalDu kan få tilgang til vertens tjeneste, ved å sjekke /etc/hosts-filen vil du oppdage at det ikke finnes noen domenenavn-omdirigering, og du kjenner ikke det spesifikke underliggende prinsippet i docker.
Både verten og beholderen kan få tilgang til vertens tjenester via host.docker.internal, men adressen som returneres av ping-kommandoen er forskjellig, som følger:
|