Dans mon docker-compose.yml
dossier, j'ai ce qui suit. Cependant, le conteneur ne récupère pas la valeur du nom d'hôte. Des idées?
dns:
image: phensley/docker-dns
hostname: affy
domainname: affy.com
volumes:
- /var/run/docker.sock:/docker.sock
Lorsque je vérifie le nom d'hôte dans le conteneur, il ne répond pas affy
.
docker
docker-compose
David Medinets
la source
la source
Réponses:
À partir de la version 3 de docker-compose , vous pouvez simplement utiliser un
hostname
champ:la source
Cela semble fonctionner correctement. Si je mets votre configuration dans un fichier:
Et puis évoquez les choses:
Et puis vérifiez le nom d'hôte à l'intérieur du conteneur, tout semble aller bien:
la source
hostname
etdomainname
sont desdocker-compose.yml
options valides . Mise à jour: juste testé, semble toujours fonctionner correctement (docker-compose version 1.4.2, docker version 1.8.2).J'ai trouvé que le nom d'hôte n'était pas visible pour les autres conteneurs lors de l'utilisation
docker run
. Cela s'avère être un problème connu (peut-être plus une fonctionnalité connue), une partie de la discussion étant:La manière correcte d'attribuer un nom d'hôte - en termes de mise en réseau de conteneurs - est de définir un alias comme ceci:
Malheureusement, cela ne fonctionne toujours pas avec
docker run
. La solution de contournement consiste à attribuer un nom au conteneur:Et
alias1
peut ensuite être envoyé par ping à partir des autres conteneurs.MISE À JOUR: Comme le souligne @grilix, vous devez utiliser
docker-compose run --use-aliases
pour rendre disponibles les alias définis.la source
--use-aliases
avecdocker-compose run
. Cela évitera de coder en dur l'alias sur larun
commandeBasé sur la documentation de docker: https://docs.docker.com/compose/compose-file/#/command
J'ai simplement mis
hostname: <string>
dans mon fichier docker-compose.Par exemple:
et le conteneur lb01 prend le
at-lb01
nom d'hôte.la source
Le moyen le plus simple que j'ai trouvé est de simplement définir le nom du conteneur dans la documentation
docker-compose.yml
See container_name . Il est applicable à docker-compose v1 +. Cela fonctionne de conteneur en conteneur, pas de la machine hôte au conteneur.Vous devriez maintenant pouvoir accéder à
affy
partir d'autres conteneurs en utilisant le nom du conteneur. Je devais le faire pour plusieurs serveurs redis dans un environnement de développement.REMARQUE La solution fonctionne tant que vous n'avez pas besoin de mettre à l'échelle. Tels que des environnements de développement individuels cohérents.
la source
Compose 3.7
la seule façon dont je suis le nom d' hôte du service de base de données à voir à l' intérieur un autre conteneur de service de la même pile était de nommer le service comme le nom d' hôte. L'utilisation de lahostname:
propriété a échoué. L'utilisation de l'environnement HOSTNAME = construct a également échoué.aliases
propriété comme décrit dans lafoz
solution.container_name
ethostname
la même valeur pour obtenir ce dont j'ai besoinJ'avais besoin de faire tourner le conteneur freeipa pour avoir un kdc fonctionnel et je devais lui donner un nom d'hôte sinon il ne fonctionnerait pas. Ce qui a finalement fonctionné pour moi, c'est de définir la
HOSTNAME
variable env dans compose:Maintenant ça marche:
la source