Fórum Root.cz

Hlavní témata => Server => Téma založeno: Danny 08. 11. 2018, 10:40:44

Název: Docker ignoruje /etc/hosts
Přispěvatel: Danny 08. 11. 2018, 10:40:44
Ahoj, mám problém: potřebuju, aby se proces, který je dockerizovaný, připojil na stroj, jehož jméno je na hostitelském stroji v /etc/hosts - Docker však z mě neznámého důvodu /etc/hosts ignoruje

(což jsem zjistil tak, že na hostitelském stroji ten stroj pingnu, ale vevnitř běžícího kontejneru už ne)

zkoušel jsem ještě v Dockerfile editovat /etc/hosts, který je uvnitř image, ale změna se neprojeví

jak to řešit? dík
Název: Re:Docker ignoruje /etc/hosts
Přispěvatel: Filip Jirsák 08. 11. 2018, 10:53:28
Aplikace běžící uvnitř Docker kontejneru se řídí konfigurací uvedenou v /etc/hosts uvnitř kontejneru. Aby fungoval ping zevnitř kontejneru na hostitelský stroj, musí být správně nastaveno routování mezi nimi a nesmí to zakázat firewall.
Název: Re:Docker ignoruje /etc/hosts
Přispěvatel: Danny 08. 11. 2018, 10:57:48
trochu provizorně vyřešeno pomocí parametru "--network=host" v docker run
Název: Re:Docker ignoruje /etc/hosts
Přispěvatel: yti 08. 11. 2018, 12:16:34
Kontajner bezi vo svojom nezavislom network priestore, takze nevie nic o /etc/hosts z host OS. S pouzitim --network=host si presunul kontajner do host network priestoru, takze uz vidi host /etc/hosts. Teoreticky mozes mountnut /etc/hosts z hosta do kontajnera, ale nie je to dobry napad, kedze Docker spravuje tento subor. Lepsie je pouzit --add-host Docker run parameter. A aj potom mozu mat niektore aplikacie problem pouzit tento zaznam (napr. Golang), kedze do hry este vstupuje nastavanie z /etc/nsswitch.conf, kde potrebujes mat 'hosts: files dns'.

https://docs.docker.com/engine/reference/run/
Název: Re:Docker ignoruje /etc/hosts
Přispěvatel: Filip Jirsák 08. 11. 2018, 12:30:33
Kontajner bezi vo svojom nezavislom network priestore, takze nevie nic o /etc/hosts z host OS. S pouzitim --network=host si presunul kontajner do host network priestoru, takze uz vidi host /etc/hosts.
Síťový prostor jsou údaje v jádru (přiřazené IP adresy, routovací tabulky, pravidla firewallu). /etc/hosts je jenom obyčejný soubor na disku, jádro s ním nijak nepracuje. Ten soubor používá systémová knihovna – DNS resolver. Obvykle glibc, ale může být použita jiná knihovna, případně může aplikace používat jiný způsob resolvování a záleží na ní, zda používá /etc/hosts.
Název: Re:Docker ignoruje /etc/hosts
Přispěvatel: ferda 08. 11. 2018, 19:53:55
Kód: [Vybrat]
--add-host=""      : Add a line to /etc/hosts (host:IP)