Dénomination des conteneurs Docker: 3 conseils pour les débutants

introduction

Lorsque vous créez un conteneur Docker, un identificateur unique universel (UUID) lui est attribué. Celles-ci sont essentielles pour éviter les conflits de noms et promouvoir l'automatisation sans intervention humaine. Ils identifient efficacement les conteneurs à l'hôte et au réseau. Cependant, les humains demandent plus d'efforts pour les différencier, que ce soit dans l'affichage long à 64 caractères lisible par l'homme ou dans la forme courte à 12 caractères plus fréquemment affichée, qui pourrait ressembler à285c9f0f9d3d.

Pour aider les humains, Docker fournit également des conteneurs avec un nom généré de manière aléatoire à partir de deux mots, joints par un trait de soulignement, par exemple. evil_ptolemy. Cela peut faciliter la distinction entre un conteneur et un conteneur, mais les noms aléatoires ne donnent pas plus d'informations sur la fonction de conteneur que l'UUID.

Voici trois astuces qui vous aideront à garder votre cap lorsque vous apprendrez à travailler avec des conteneurs.

1 - Nommez le conteneur lorsque vous l'exécutez

En ajoutant--name=meaningful_name à la commandedocker run, unevil_ptolomy devient plus reconnaissable dans les sessions interactives ainsi que dans la sortie de commandes commedocker ps. Il y a cependant des limites. Comme les noms de conteneur doivent être uniques, vous ne pouvez pas utiliser une dénomination délibérée et mettre à l'échelle un service au-delà d'un conteneur.

Sur la ligne de commande ou dans un Dockerfile:
docker run --name=meaningful_name

Par exemple, si nous avons exécuté un conteneur basé sur l'image de base denginx et l'avons démarré comme ceci:

docker run --name nginx -d nginx

Le nom apparaîtrait dans la liste des conteneurs en cours d'exécution:

docker ps
OutputCONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
08f333ef7216        nginx               "nginx -g 'daemon off"   15 seconds ago      Up 14 seconds       80/tcp, 443/tcp      nginx

Bien que le nom apparaisse dans la sortie dedocker ps et puisse être utilisé pour gérer le conteneur, il n'apparaîtra pas dans l'invite de commande du conteneur si vous y attachez ou dans les fichiers journaux. Pour ce faire, vous devrez également attribuer un nom d’hôte.

2 - Attribuer un nom d'hôte au conteneur

La valeur fournie à la commande--hostname est définie à l'intérieur de/etc/hostname et/etc/hosts à l'intérieur du conteneur. Par conséquent, il apparaît dans l'invite de commande. Il joue un rôle dans la configuration decontainer DNS et peut être utile lors des étapes d'apprentissage d'une configuration multi-conteneurs. L’accès n’est pas facile depuis l’extérieur du conteneur, mais il apparaît dans les fichiers journaux du conteneur. Lorsque ces fichiers sont écrits sur un volume indépendant de l’hôte, il est plus facile d’identifier le conteneur.

CLI and Dockerfile:
docker run --hostname=value OUdocker run -h value

Bien que--name et--hostname soient tous deux utiles pour l'identification des conteneurs, il ne s'agit parfois pas du tout de nommer le conteneur. Il s’agit plutôt de faire nettoyer un conteneur après lui-même sans avoir à vous rappeler de le faire vous-même.

3 - Supprimer automatiquement les conteneurs à leur sortie

Lors du débogage, il est utile qu’un conteneur arrêté persiste après sa sortie. Vous pouvez conserver des données telles que les fichiers journaux et étudier l’état final du conteneur. Cependant, vous savez parfois, lorsque vous exécutez le conteneur, que vous ne le souhaitez plus lorsque vous aurez terminé. Dans ce cas, vous pouvez utiliser l'indicateur--rm pour le supprimer automatiquement à sa sortie. Cela peut faciliter la propreté des choses.

Attention cependant! Si vous utilisez des volumes Docker,--rm supprimera tous lesvolumes NOT specified by name.

CLI et Dockerfile:
docker run --rm

Ceci est très utile lorsque vous créez une image et que vous devez l’attacher à un conteneur en cours d’exécution. Vous voulez regarder autour de vous et vous ne voulez pas remplir votre disque avec des conteneurs que vous n'avez pas l'intention d'utiliser à nouveau.

Conclusion

Ces trois indicateurs pourdocker run,--name,--hostname et--rm peuvent chacun, à leur manière, permettre de savoir plus facilement ce qui se passe lors de l'apprentissage de Docker. Vous pouvez en savoir plus sur les conteneurs et l'utilisation de la commandedocker run dans le guideWorking with Docker Containers.