202 votes

Comment mettre à jour le fichier /etc/hosts dans l'image Docker pendant la "construction du docker" ?

Je veux mettre à jour mon /etc/hosts pendant le "docker build".

J'ai ajouté la ligne ci-dessous dans le Dockerfile mais il n'y a pas de mise à jour. /etc/hosts et ne donne aucune erreur.

RUN echo "192.168.33.11    mynginx" >> /etc/hosts

Je dois mettre à jour /etc/hosts . Quelqu'un peut-il me donner des conseils à ce sujet ?

0 votes

Utilisez-vous boot2docker pour exécuter votre construction docker ?

0 votes

Non, j'utilise la version Linux de docker 1.8.

1 votes

Et lorsque vous exécutez votre image en tant que conteneur, son /etc/hosts est inchangé ? Ou bien faites-vous référence à votre hôte Linux /etc/hosts ?

5voto

user10805445 Points 41

Si cela peut être utile à quelqu'un, le HOSTALIASES env variable a fonctionné pour moi :

echo "fakehost realhost" > /etc/host.aliases
export HOSTALIASES=/etc/host.aliases

9 votes

Vous ne confondez pas Docker et Kubernetes ? Je ne vois pas de variable HOSTALIASES dans la documentation de Docker.

4voto

Karan Raj Points 96

Vous pouvez utiliser le --add-host pendant l'exécution de docker.

Pour l'utilisation de votre cas : docker run --add-host mynginx:192.168.33.11 [image_name] :[tag]

Cela mettra à jour votre /etc/hosts

vous pouvez le vérifier en utilisant les commandes suivantes :

  • docker exec -it [container_id] sh

si sh ne fonctionne pas pour vous, alors vous pouvez essayer bash ou /bin/sh ou /bin/bash

  • cd etc
  • hôtes de chat

-2voto

Ce qui suit a fonctionné pour moi en montant le fichier pendant le docker run au lieu du docker build.

docker service create --name <name>  --mount type=bind,source=/etc/hosts,dst=/etc/hosts   <image>

0 votes

L'ajout d'un fichier en utilisant le volume crée une complexité supplémentaire et chaque hôte doit avoir le fichier.

-2voto

Name Last Points 9
Tis is me Dockefile
FROM XXXXX
ENV DNS_1="10.0.0.1 TEST1.COM"
ENV DNS_1="10.0.0.1 TEST2.COM" 
CMD ["bash","change_hosts.sh"]`

#cat change_hosts.sh
su - root -c "env | grep DNS | akw -F "=" '{print $2}' >> /etc/hosts"
  • info
  • l'utilisateur doit su

-18voto

Esk Aie Points 1

Juste une réponse rapide pour exécuter votre conteneur en utilisant :

docker exec -it <container name> /bin/bash

une fois que le conteneur est ouvert :

cd ..

puis

`cd etc`

et ensuite vous pouvez

cat hosts

ou :

apt-get update
apt-get vim

ou n'importe quel éditeur que vous aimez et ouvrez-le dans vim, ici vous pouvez modifier disons votre ip de démarrage à 0.0.0.0

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X