11 votes

Impossible d'écrire dans le fichier /etc/hosts à partir de Dockerfile avec RUN

Je crée une image Docker en utilisant un Dockerfile assez simple. Dans le Dockerfile, j'ai cette commande :

RUN printf "192.92.13.243 www.hahaha.com \n" >> /etc/hosts

La commande elle-même semble fonctionner correctement, puisque la création de l'image ne s'arrête pas à ce stade.

Le problème est le suivant : Lors de l'exécution de l'image, la ligne qui est censée avoir été insérée dans "/etc/hosts" n'est pas là.

J'ai cherché et découvert qu'avant la version 1.2 de Docker, il y avait un problème avec le fichier hosts dans les conteneurs. Dans mon cas, j'utilise la version 1.5, la plus récente à ce jour.

Est-ce que j'ai manqué quelque chose ?

UPDATE 1 :

Il semble qu'il y ait beaucoup de problèmes à ce sujet, à la fois ouverts et fermés, dans les pages github de Docker.

12voto

jonatan Points 465

Cela fonctionne sur docker 1.7.0

RUN echo "192.168.11.112 myhost" >> /etc/hosts && wget http://myhost

L'astuce consiste à ajouter le nom d'hôte sur la même ligne que vous l'utilisez, sinon le fichier hosts sera réinitialisé, puisque chaque commande RUN démarre un nouveau conteneur intermédiaire. Par exemple, cela ne fonctionnera pas :

RUN echo "192.168.11.112 myhost" >> /etc/hosts
RUN wget http://myhost

1 votes

Merci pour cet aperçu ! Bien que correct (j'ai vérifié) et utile en général, il ne m'est pas vraiment utile dans ce cas. J'ai besoin que le fichier "hosts" soit rempli lorsque le conteneur s'exécute.

9voto

Jacob G Points 2666

Après avoir écrit la mise à jour de ma question, j'ai décidé de jeter un nouveau coup d'œil aux "problèmes" ouverts dans github. Il s'avère qu'une solution de contournement a été mise en place :

docker run ... --add-host='server:0.0.0.0' ...

En utilisant l'argument "--add-host..." lors du démarrage d'un conteneur, il est possible de modifier le fichier hosts.

6 votes

Je veux être capable de faire cela dans le build cependant. La personne qui fait fonctionner le conteneur ne devrait pas avoir à connaître les hôtes internes. Cela n'a aucun sens !

0 votes

Je fais écho à @samsamm777. Je me demande s'il existe un bon moyen de le faire ?

0 votes

C'est vraiment très un comportement surprenant, ce qui n'est jamais une bonne idée dans les systèmes informatiques.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X