Għaliex il-container ta’ Docker jinjora l-resolver DNS tal-VPN
Container jikkopja r-resolver tal-host meta jibda, għalhekk VPN li jerġa’ jikteb id-DNS aktar tard jibqa’ inviżibbli ġo fih. Għaddi r-resolver b’mod espliċitu.
Il-VPN huwa attiv, il-browser jasal għas-siti interni, u l-container xorta ma jistax isolvi l-istess ismijiet. Installa ta’ pakkett imut bi żball ta’ soluzzjoni tal-isem bħal EAI_AGAIN, jew applikazzjoni ma ssibx host tad-database li l-magna host isolvi mingħajr l-ebda lment. Il-container mhuwiex juża r-resolver li installa l-VPN. Docker ikkopja l-konfigurazzjoni tar-resolver tal-host meta nħoloq il-container, u xejn ma kkopjaha mill-ġdid wara.
Żewġ veduti tar-resolver fuq magna waħda
Fuq Linux, Docker jagħti lil kull container kopja ta’ konfigurazzjoni tar-resolver tal-host fil-mument tal-ħolqien, jiffiltra l-indirizzi loopback, u jħaddem server DNS inkorporat fuq 127.0.0.11 li jgħaddi l-mistoqsijiet ’il barra. Klijent VPN li jerġa’ jikteb /etc/resolv.conf wara li jkun beda l-container ma jbiddel xejn ġo fih. L-istartjar mill-ġdid tal-container jgħin biss jekk ir-resolver tal-host ikun kumbinazzjoni korrett f’dak il-mument.
Docker Desktop fuq macOS jew Windows iżid saff, għax id-daemon jgħix f’magna virtwali. Ir-resolver VPN tal-host jista’ qatt ma jkun viżibbli għal dik il-VM, għalhekk l-istartjar mill-ġdid ma jbiddel xejn. Qabbel iż-żewġ veduti qabel tagħżel soluzzjoni: docker exec mycontainer cat /etc/resolv.conf ħdejn il-lista tar-resolvers tal-host.
Container li jelenka resolver pubbliku waqt li l-host jelenka wieħed intern se jsolvi l-ismijiet pubbliċi u jonqos f’dawk interni. Dik il-qasma hija l-firma ta’ din il-problema.
Għażla A: tgħaddi r-resolver tat-tunnel kull container
Docker jaċċetta settijiet DNS kull container, u dik hija l-iżgħar bidla li taħdem. L-ewwel aqra l-indirizzi tar-resolver tal-VPN: scutil --dns fuq macOS, resolvectl status jew il-ħruġ tal-istat tal-klijent stess fuq Linux. Imbagħad ibda l-container magħhom, pereżempju docker run --dns 192.168.2.1 --dns 192.168.123.1 myimage. Fil-Compose l-istess sett huwa lista taħt is-servizz, fejn jgħix fil-kontroll tal-verżjonijiet minflok fl-istorja tas-shell ta’ xi ħadd.
Firxa dns f’/etc/docker/daemon.json tapplika għal kull container ġdid, li tinstema’ aktar pulita u mhijiex. Tapplika wkoll meta t-tunnel ikun nieqes, u mbagħad resolver li jintlaħaq biss mill-VPN ikisser it-tiġbid normali tal-immaġini. Is-settijiet kull container huma aktar faċli biex jiġġustifikaw u aktar faċli biex jitneħħew.
Għażla B: ħalli l-container jaqsam in-netwerk tal-host
In-netwerk tal-host jevita l-kopja għal kollox, għax il-container juża r-resolver tal-host u t-tunnel tal-host. Huwa jneħħi wkoll l-iżolament tan-netwerk li x’aktarx xtaqt, u ma jġibx ruħu l-istess taħt Docker Desktop. Fuq Linux hija l-għażla pragmatika għal għodda ta’ darba li trid isolvi ismijiet interni.
Għall-bini l-ebda għażla ma tapplika, għax il-passi tal-bini ma jirtux il-bnadar tal-ħin tal-eżekuzzjoni. Ibni b’netwerk tal-host fejn il-pjattaforma tippermetti, jew żomm l-installazzjoni tad-dipendenzi fi stadju li ma jeħtieġx it-tunnel.
X’ma jsewwi l-ebda waħda mill-għażliet
Indirizz DNS huwa għalxejn jekk il-container m’għandux rotta lejh. Ir-resolver tal-VPN normalment ipoġġi ġewwa l-ispazju tal-indirizzi tat-tunnel, għalhekk il-container jeħtieġ mogħdija lejn dak il-prefiss. Il-pont prestabbilit ta’ Docker normalment jidderieġi ’l barra permezz tal-host, u dan biżżejjed meta l-host ikollu r-rotta tat-tunnel u l-ippeżjar ’il quddiem ikun attivat. Netwerks tal-pont personalizzati bil-baċiri tal-indirizzi tagħhom jistgħu jaħbtu mas-subnet tal-VPN, u mbagħad il-mistoqsijiet imorru x’imkien ieħor għal kollox.
Iċċekkja s-subnet tan-netwerk ta’ Docker kontra s-subnet tal-VPN qabel ma tiddebagga r-resolver innifsu. Is-sovrappożizzjoni tipproduċi falliment li jidher eżattament bħal server DNS miksur.
Ivverifika ġewwa l-container
Ittestja b’getent hosts db.internal ġewwa l-container minflok b’browser jew runtime tal-lingwa, għax dawk japplikaw il-politika DNS tagħhom u l-cache tagħhom. Jekk getent isolvi l-isem u l-applikazzjoni xorta tonqos, ir-resolver issa huwa korrett u l-problema li fadal hija fil-livell tal-applikazzjoni. Jekk ma jisvolvix, il-pass DNS mhuwiex lest.
Oħloq il-container mill-ġdid wara li tbiddel is-settijiet DNS tiegħu. L-editjar ta’ /etc/resolv.conf ġewwa container li qed jaħdem jisparixxi miegħu u jaħbi l-problema tal-konfigurazzjoni eżatt għall-ħin li wieħed jeħtieġ biex jerġa’ jibdah.