Je ne parviens pas à définir le nom d'hôte sur un conteneur Docker en cours d'exécution. J'ai également du mal à comprendre comment spécifier le nom d'hôte une fois l'image démarrée.
J'ai commencé un conteneur à partir d'une image que j'ai téléchargée:
sudo docker run -p 8080:80 -p 2222:22 oskarhane/docker-wordpress-nginx-ss
Mais j'ai oublié de spécifier hostname via -h
; Comment puis-je spécifier le nom d'hôte maintenant que le conteneur est en cours d'exécution?
run
une image et non lorsque vous démarrez un conteneur.docker restart
documentationRéponses:
Editer
/etc/hostname
est une chose pour laquelle vous avez besoin d’un accès ssh à l’intérieur du conteneur. Sinon, vous pouvez faire tourner le conteneur avec-h
option.Pour définir les noms d'hôte et de domaine:
la source
docker exec /bin/bash
sur un conteneur en cours d'exécution, pas besoin d'installerssh
(ce qui est une mauvaise pratique pour des raisons d'administration).hostname
(capacité manquante). L'exécution en coursdocker run -h <hostname> <image> <container-name>
crée un nouveau conteneur avec le nom d'hôte indiqué.Arrêtez le conteneur et le service
Editer le fichier de configuration (JSON) [Vous devriez d'abord faire une sauvegarde]
/var/lib/docker/containers/CONTAINER_ID/config.json
Remplacer
avec
Commencez conteneur et service
(Facultativement, vous pouvez également attacher un menu fixe)
Des détails sur les dockers (par exemple, CONTAINER_NAME, CONTAINER_ID) peuvent être obtenus en exécutant
la source
Docker version 17.05.0-ce, build 89658be
Redémarrer le conteneur serait l'option la plus simple - mais vous pouvez aussi éditer / etc / hostname et commencer à partir de là.
la source
/etc/hostname
n'a aucun effet après le redémarrage, car elle est écrasée à chaque fois par le "vrai" nom d'hôte, géré par le menu fixe . Vous ne pouvez pas exécuterhostname
sur le conteneur, car celui-ci ne dispose pas de fonctionnalités pour cette opération (par défaut, et vous ne souhaitez pas le modifier)/etc/hostname
et ne pas redémarrer le conteneur n'a aucun but.Si vous l'utilisez,
--net=host
vous ne pouvez pas modifier le nom d'hôte depuis-h
ou depuis le menu fixe.Voir https://github.com/docker/docker/issues/5708
la source
https://evolvingweb.ca/blog/changing-docker-hostnames-namespaces décrit un moyen de le faire. L'idée de base est d'utiliser
docker inspect
pour obtenir le pid du conteneur, puis entrez l'espace de noms Uts du conteneur viansenter
. L'exécution à l'hostname
intérieur de cet espace de noms modifiera le nom d'hôte de l'instance de menu fixe qui partage cet espace de noms.la source
Comme quelques-uns l'ont souligné, cela peut être modifié pour les conteneurs en modifiant le
config.v2.json
fichier.Assurez-vous simplement que le service Docker est arrêté avant la modification du fichier, sinon ce sera OVERWRITTEN. Les étapes DOIVENT être effectuées dans cet ordre
Modifier le
/var/lib/docker/containers/CONTAINER_ID/config.v2.json
fichier - -Démarrer le service Docker
Cela a été confirmé que je travaille sur Docker v17.05.0-ce, sur un conteneur utilisant
--net=host
. La modification du/etc/hostname
fichier ne fonctionne pas et le fichier est simplement écrasé.la source
Dans
trouver et définir
la source
Docker version 17.05.0-ce, build 89658be
. La configuration est écrasée, qui sait d'où. Et le nom d’hôte lui-même ne change pas après le redémarrage.