Docker node
| Fiche express | |
|---|---|
| Type | Sous-commande Swarm — gestion des nœuds |
| Portée | À exécuter sur un manager |
| Usage principal | Étiquetage (labels) et contraintes de placement |
| Voir aussi | Docker swarm · Docker service |
docker node regroupe les sous-commandes de gestion des nœuds d'un cluster Swarm. Son usage le plus courant est l'attribution d'étiquettes (labels) aux nœuds, qui servent ensuite à contraindre ou orienter le placement des tâches d'un service — par exemple pour répartir des répliques entre zones de disponibilité.
Lister les nœuds
docker node ls
Étiquettage des nœuds
Ajouter un label à un nœud :
docker node update --label-add availability_zone=east <NOM_NOEUD>
docker node update --label-add availability_zone=west <NOM_NOEUD>
Consulter les labels d'un nœud :
docker node inspect --pretty <NOM_NOEUD>
Utiliser les labels pour le placement
Les labels de nœuds n'ont d'effet que combinés à des règles de placement lors de la création d'un service.
Contrainte — le service ne se déploie que sur les nœuds correspondant (ou ne correspondant pas) au label :
docker service create --name nginx-east \
--constraint node.labels.availability_zone==east \
--replicas 3 nginx
docker service ps nginx-east
docker service create --name nginx-west \
--constraint node.labels.availability_zone!=east \
--replicas 3 nginx
docker service ps nginx-west
Préférence de répartition — plutôt qu'une contrainte stricte, on peut demander à Swarm de répartir les répliques aussi uniformément que possible entre les valeurs d'un label :
docker service create --name nginx-spread \
--placement-pref spread=node.labels.availability_zone \
--replicas 3 nginx
docker service ps nginx-spread
Ce mécanisme est notamment utilisé pour garantir qu'un service répliqué ne se retrouve pas concentré sur une seule zone de disponibilité (voir la section « Haute disponibilité » de Docker swarm).
Voir aussi
- Docker swarm — vue d'ensemble du cluster
- Docker service — création et cycle de vie des services