Je souhaite mettre à jour mon /etc/hosts
fichier lors de la "construction du docker".
J'ai ajouté la ligne ci-dessous dans Dockerfile mais cela ne met pas à jour le /etc/hosts
fichier ni ne donne aucune erreur.
RUN echo "192.168.33.11 mynginx" >> /etc/hosts
J'ai besoin de mettre à jour /etc/hosts
. Quelqu'un peut-il suggérer à ce sujet?
docker
dockerfile
hosts
Prakash
la source
la source
Réponses:
Avec une version plus récente de docker, cela pourrait être fait avec docker-compose et sa
extra_hosts
directiveEn bref: modifier
/etc/hosts
votre conteneur lors de son exécution, pas le construire.Avec Docker 17.x +, vous avez un
docker build --add-host
mentionné ci - dessous , mais, comme commenté dans le numéro 34078 et dans cette réponse :Les solutions mentionnées font référence au docker-compose que je suggérais ci-dessus:
la source
docket exec -it <container name> /bin/bash
, puis mettre à jour l'hôte du conteneur du docker sous / ect / host avec votre éditeur de ligne de commande préféré (vim, emacs, nano, echo ''. >> />).Vous ne pouvez pas modifier le fichier hôte dans l'image à l'aide
echo
de l'RUN
étape car le démon docker conservera le fichier (/ etc / hosts) et son contenu (entrée hosts) lorsque vous démarrez un conteneur à partir de l'image.Cependant, ce qui suit peut être utilisé pour obtenir la même chose:
La clé à noter ici est l'utilisation de la
exec
commande comme le suggère la documentation de docker. L'utilisation de exec rendra la commande java comme PID 1 pour le conteneur. Les interruptions Docker ne répondront qu'à cela.Voir https://docs.docker.com/engine/reference/builder/#entrypoint
la source
ENTRYPOINT
n'est pas une instruction pour l'image. Il ne marque un point d'entrée que lorsque nous exécutons un conteneur à partir de cette image, ce qui signifie que l'entrée hosts n'existe qu'après l'exécution du conteneur. Je ne pense pas que l'exigence soit essentielle. Il doit y avoir un malentendu.Je pense que docker a récemment ajouté le
--add-host
drapeau à la construction de docker, ce qui est vraiment génial.[Modifier] Cette fonctionnalité a donc été mise à jour le 17.04.0-ce
Pour plus de détails sur l'utilisation
docker build
du--add-host
drapeau, veuillez visiter: https://docs.docker.com/edge/engine/reference/commandline/build/la source
--add-host
fonctionnalité est disponible sur Docker 12 sur CentOS.Comme cela apparaît toujours comme une première réponse dans Google, je vais apporter une solution possible.
La commande prise d' ici a étonnamment fonctionné pour moi (Docker 1.13.1, Ubuntu 16.04):
la source
Si cela est utile pour quelqu'un, la
HOSTALIASES
variable env a fonctionné pour moi:la source
Vous pouvez le faire avec la commande suivante au moment de l'exécution de docker
docker run [OPTIONS] --add-host example.com:127.0.0.1 <your-image-name>:<your tag>
Ici, je mappe
example.com
sur localhost127.0.0.1
et son fonctionnement.la source
J'utilise AWS Elasticbeanstalk + Docker + Supervisord.
Réponse rapide
Ajoutez simplement du code
Dockerfile
.la source
Réponse complète
hosts
fichier que vous souhaitez ajouter au conteneur docker;hosts
fichier dans le conteneur en ajoutant la ligne suivante dans leDockerfile
ENTRYPOINT
orCMD
ouCRON
job, intégrez-y la ligne de commande suivante ou au moins exécutez-la dans le conteneur en cours d'exécution:Dockerfile
car la modification sera perdue:la source
Vous pouvez utiliser l' option --add-host pendant l'exécution du docker.
Pour votre cas, utilisez: 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:
si sh ne fonctionne pas pour vous, vous pouvez essayer bash ou / bin / sh ou / bin / bash
la source
la source
La suite a fonctionné pour moi en montant le fichier pendant l'exécution de docker au lieu de la construction de docker
la source
Juste une réponse rapide pour exécuter votre conteneur en utilisant:
une fois le conteneur ouvert:
puis
et alors tu peux
ou:
ou n'importe quel éditeur que vous aimez et ouvrez-le dans vim, ici vous pouvez modifier votre ip de démarrage en 0.0.0.0
la source