Je veux faire en sorte que le conteneur de menu fixe que je crée utilise les mêmes paramètres /etc/hosts
que sur la machine hôte à partir de laquelle je suis exécuté. Y a-t-il un moyen de faire cela?
Je sais qu'il existe une option --add-Host
avec l'exécution de docker, mais ce n'est pas exactement ce que je veux, car le fichier /etc/hosts
de l'ordinateur hôte peut être différent sur différentes machines; il n'est donc pas pratique pour moi de coder en dur l'adresse exacte/hôtes avec --add-Host
.
Utilisez --network=Host
dans la commande d'exécution du menu fixe. Cela indique à Docker de faire en sorte que le conteneur utilise la pile réseau de l'hôte. Vous pouvez en apprendre plus ici: https://docs.docker.com/engine/userguide/networking/
Ajouter un fichier hôte standard -
docker run -it ubuntu cat /etc/hosts
Ajouter un mappage pour le serveur 'foo' -
docker run -it --add-Host foo:10.0.0.3 ubuntu cat /etc/hosts
Ajouter des mappages pour plusieurs serveurs
docker run -it --add-Host foo:10.0.0.3 --add-Host bar:10.7.3.21 ubuntu cat /etc/hosts
Référence - http://jasani.org/2014/11/19/docker-now-supports-adding-Host-mappings/
Ajouter à votre commande d'exécution -v /etc/hosts:/etc/hosts
Si des utilisateurs de confiance démarrent vos conteneurs, vous pouvez utiliser une fonction Shell pour "copier" facilement les entrées /etc/hosts
dont vous avez besoin:
add_Host_opt() { awk "/\\<${1}\\>/ {print \"--add-Host $1:\" \$1}" /etc/hosts; }
Vous pouvez alors faire:
docker run $(add_Host_opt Host.name) ubuntu cat /etc/hosts
De cette façon, vous n'avez pas à coder en dur les adresses IP.
Si vous utilisez docker-compose.yml
, la propriété correspondante est la suivante:
services:
xxx:
network_mode: "Host"
IMO, passer l'option --network=Host
lors de l'exécution du menu fixe est une meilleure option suggérée par d3ming
par rapport aux autres options suggérées par d'autres réponses:
Si vous exécutez une machine virtuelle pour exécuter des conteneurs docker, s’il existe des hôtes (machines virtuelles, etc.) que vous souhaitez que vos conteneurs connaissent, en fonction du logiciel VM que vous utilisez, vous devez vous assurer que sont des entrées sur la machine hôte (hébergeant la machine virtuelle) pour les machines que vous souhaitez que les conteneurs soient en mesure de résoudre. Cela est dû au fait que VM et ses conteneurs ont l'adresse IP de la machine hôte (des machines virtuelles) dans leur resolv.conf.