Zašto proxy kontejner ne koristi DNS kontejner automatski
Dijeljenje Docker hosta, dijeljenje mreže i odabir resolvera tri su različite stvari. Pratite DNS upit iz unutrašnjosti proxyja.
Pokretanje proxyja i DNS poslužitelja na istom Docker hostu ne povezuje njihove DNS putanje. Važna su tri odvojena odnosa:
- Mrežna dostupnost. Odvojeni Compose projekti obično imaju odvojene zadane mreže. Smjestite usluge na prikladnu zajedničku mrežu, bilo unutar jednog projekta bilo kroz mrežu koja je izričito zajednička između projekata.
- Otkrivanje usluga. Ugrađeni DNS prilagođene Docker mreže može razriješiti imena kontejnera. To aplikaciji omogućuje da otkrije susjeda; ali ne odabire tog susjeda automatski kao svoj DNS resolver.
- Odabir resolvera. Utvrdite koji se resolver koristi unutar proxy kontejnera. Polje
dnsu Composeu prima adrese DNS poslužitelja. Ime poputdns.localkoje se razrješava u aplikaciji ne čini ga valjanom vrijednošću tog polja.
Pratite upit od proxy kontejnera do njegove konfigurirane adrese resolvera. Potvrdite rutu i DNS slušatelja na toj adresi. Objavljivanje host porta 53 stvara pristupnu putanju na strani hosta; ono ne govori kontejnerima da je koriste. Kontejneri koji dijele mrežu mogu umjesto toga komunicirati izravno.
Ako konfiguracija upućuje na adresu DNS kontejnera, održavajte je stabilnom uz kompatibilnu IPAM konfiguraciju. Dinamički dodijeljena adresa kopirana iz jučerašnjeg kontejnera može zakazati pri ponovnom stvaranju. Provjerite i upstream putanju resolvera: prosljeđivanje neodgovorenih upita natrag samome sebi stvara drugačiji kvar od nedostupnog resolvera.
Naposljetku, utvrdite tko razrješava odredište. HTTP proxy koji razrješava CONNECT ime može koristiti ovu putanju kroz kontejner; SOCKS klijent koji razrješava lokalno možda neće. Pretraga na hostu dokazuje rutu hosta, ne rutu proxy procesa.