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.