Je souhaite définir le nom d'hôte dans un conteneur s'exécutant dans Kubernetes, mais Kubernetes semble remplacer tout ce que j'ai défini lors de l'exécution.
J'ai essayé à la fois de définir/etc/hostname dans l'image du menu fixe que Kubernetes utilise et d'inclure echo "Host.example.com > /etc/hostname"
dans le CMD du fichier Docker.
Il semble y avoir un indicateur de menu fixe -h
pour définir le nom d'hôte. Est-il possible pour moi de spécifier dans mon contrôleur de réplication qu'il doit démarrer le conteneur avec un indicateur spécial?
La Debian du conteneur, si cela peut aider.
Ma réponse précédente était incorrecte, modifiée avec les informations correctes
L'indicateur -h
pour docker run
définira le nom d'hôte du conteneur lors de sa création.
Testez-le: docker run -h test.example.com -it ubuntu /bin/bash
La commande docker start
n'a pas le même argument -h
ou --hostname
. Il ne semble pas possible de changer le nom d'hôte d'un conteneur existant, mais simplement un nouveau à partir d'une image.
Cependant, Kubernetes: Il y a un problème sur Github ouvert concernant la façon dont Kubernetes traite les noms d'hôte. Il ne semble pas que Kubernetes expose directement le paramètre de nom d’hôte de docker, mais vous pouvez éventuellement l’influencer via le nom de votre pod.
J'ai trouvé la solution pour changer le nom d'hôte du docker après que le conteneur a été exécuté ou je peux dire au conteneur existant, voici quelques étapes
Courir
docker inspect -f '{{ .State.Pid }}' <existing_docker_hostname>
La sortie sera un nombre <15580>
Exécutez cette commande pour vous connecter au conteneur.
nsenter --target 15580 --uts
Exécutez cette commande pour changer le nom d'hôte
hostname "node_js"
maintenant, quittez le conteneur et connectez-vous à nouveau, vous verrez que le nom d'hôte a été modifié.