2017-01-03 1 views
1

J'ai une machine hôte avec une résolution d'hôtes définie dans son fichier/etc/hosts./etc/hosts de l'hôte de carte dans un conteneur Docker ayant un réseau en pont

Sur cette machine, j'utilise mes conteneurs Docker configurés avec un réseau Bridge.
Comme je ne suis pas sur le réseau hôte, mes conteneurs Docker n'ont pas accès aux définitions d'hôtes de mon fichier machine/etc/hosts.

Malheureusement, ayant un DNS ce n'est pas une option pour le moment.

Ma question est de savoir comment puis-je utiliser ces définitions dans mes conteneurs en utilisant un réseau en pont? J'ai lu monter le fichier hosts/etc/hosts dans le conteneur n'est pas un bon choix puisque c'est géré en interne par le docker deamon.
Savez-vous comment je pourrais y arriver?

+0

est-ce possible? Copiez votre hôte/etc/hosts dans container/tmp/foo, puis ajoutez/tmp/foo dans/etc/hosts du conteneur – dormi330

Répondre

2

Vous avez 2 options

docker run -v /etc/hosts:/etc/hosts <yourimage>

le problème avec l'option est que votre fichier hosts de conteneur est écrasé, ce qui se retourner contre si vous voulez communiquer avec tout autre service dans ce docker-réseau.

Ainsi je ferais

docker run -v /etc/hosts:/tmp/hosts <yourimage>

Et utiliser un point d'entrée dans l'image, qui fait quelque chose entre ces lignes

cat /tmp/hosts >> /etc/hosts

a) Vous voulez filtrer certaines lignes comme localhost, ou sélectionnez des lignes spécifiques en utilisant grep b) Vous voulez vous assurer de ne pas répéter cela sur chaque bootstrap de conteneur, donc écrivez un sémaphore ou similaire (un fichier, c Heck le fichier quel que soit)

0

Je pense qu'il peut être préférable d'utiliser l'option de ligne de commande de --add-host pour ajouter des entrées dans le /etc/hosts du conteneur.

Voici un extrait du official Docker Reference

Gestion /etc/hosts

Votre containeur lignes dans/etc/hosts qui définissent le nom d'hôte du conteneur lui-même ainsi que localhost et quelques autres choses communes . L'indicateur --add-host peut être utilisé pour ajouter des lignes supplémentaires à /etc/hosts.

$ docker run -it --add-host db-static:86.75.30.9 ubuntu cat /etc/hosts 
172.17.0.22  09d03f76bf2c 
fe00::0   ip6-localnet 
ff00::0   ip6-mcastprefix 
ff02::1   ip6-allnodes 
ff02::2   ip6-allrouters 
127.0.0.1  localhost 
::1    localhost ip6-localhost ip6-loopback 
86.75.30.9  db-static