Comment gérer le nom d'hôte spécifique comme l'option -h dans Dockerfile
J'utilise CentOS 7 comme docker hôte de démon et centos:6 Docker images.
Je veux installer un logiciel qui nécessite résolu le nom d'hôte comme non-bouclage de l'adresse. Si je lance un menu fixe de l'image avec l'option-h comme
docker run -i -t -h myhost centos:6 /bin/bash
Alors je peux installer le logiciel, parce que /etc/hosts dans le conteneur automatiquement configuré comme
[root@myhost /]# cat /etc/hosts
172.17.0.7 myhost
127.0.0.1 localhost
[root@myhost /]# ping myhost
PING myhost (172.17.0.7) 56(84) bytes of data.
64 bytes from myhost (172.17.0.7): icmp_seq=1 ttl=64 time=0.033 ms
Mais je ne peut pas utiliser la même façon, si je créer une image à partir Dockerfile. J'ai testé la création d'une image à l'aide de la suite Dockerfile
FROM centos:6
ENV HOSTNAME myhost
RUN ping myhost
Dans le panneau processus de construction, attribué le nom d'hôte ne peut pas être résolu tant que dynamique ip addr comme suit:
$ docker build -t testimage .
Sending build context to Docker daemon 2.048 kB
Sending build context to Docker daemon
Step 0 : FROM centos:6
---> a30bc9f3097e
Step 1 : ENV HOSTNAME myhost
---> Using cache
---> e73bf592389e
Step 2 : RUN ping myhost
---> Running in ca54c8eac073
ping: unknown host myhost
INFO[0000] The command [/bin/sh -c ping myhost] returned a non-zero code: 2
Comment puis-je utiliser des nom d'hôte spécifique résolue de la dynamique conteneur IP addr?
source d'informationauteur dempasong
Vous devez vous connecter pour publier un commentaire.
Ce n'est généralement pas possible dans un Dockerfile.
Selon le logiciel, vous pourriez être en mesure de faire une sorte de travail. Par exemple, vous pouvez essayer quelque chose comme
Par définir le nom d'hôte dans le même EXÉCUTER la commande que vous installez le logiciel, il va se passer à l'intérieur de la même couche du conteneur. Docker permettra plus tard de remplacer le nom d'hôte et vous aurez à le faire à nouveau lors de l'exécution, mais votre logiciel peut être OK avec ça.
Si vous avez à faire beaucoup de cela, vous pouvez essayer de Packer pour la construction de conteneurs. Il peut construire des conteneurs Docker, mais ne pas utiliser plusieurs couches. De ce fait, il est plus lent à se reconstruire, plus rapide pour télécharger de la construit des images, et il est plus pratique de faire plusieurs opérations sur une image avant de la congeler dans un récipient.
Je pense que la suite est mieux parce que les conteneurs docker n'ont généralement pas de 'hostname' installé, donc je voudrais utiliser la tête de commande:
J'ai récemment commencé un projet de l'acheminement des conteneurs par le nom d'hôte, le projet est dans un très début de la phase alpha, mais peut-être que ça pourrait aider quelqu'un qui est à la recherche pour certains plus facilement les solutions de routage qui n'utilise pas plus lourd ou plus lent des solutions comme des résolveurs dns ou consul valeur de la clé de résolveurs par essaim de l'association.
Pour toute personne intéressée ou prêts à aider les pensions de titres sont ici.
https://github.com/Markcial/yacht
Dans le cas où
/etc/hosts
n'aide pas, j'ai remplacer lehostname
binaire.