diff --git a/docs/index.html b/docs/index.html index 1a4e88f9..f4d58f57 100644 --- a/docs/index.html +++ b/docs/index.html @@ -5065,6 +5065,61 @@ More resources on this topic: --- +## Constraints and global services + +(New in Docker Engine 1.13) + +- By default, global services run on *all* nodes + ```bash + docker service create --mode global ... + ``` + +- You can specify constraints for global services + +- These services will run only on the node satisfying the constraints + +- For instance, this service will run on all manager nodes: + ```bash + docker service create --mode global --constraint node.role==manager ... + ``` + +--- + +## Constraints and dynamic scheduling + +(New in Docker Engine 1.13) + +- If constraints change, services are started/stopped accordingly + + (e.g., `--constraint node.role==manager` and nodes are promoted/demoted) + +- This is particularly useful with labels: + ```bash + docker node update node1 --label-add defcon=five + docker service create --constraint node.labels.defcon==five ... + docker node update node2 --label-add defcon=five + docker node update node1 --label-rm defcon=five + ``` + +--- + +## Shortcomings of dynamic scheduling + +.warning[If a service becomes "unschedulable" (constraints can't be satisfied):] + +- It won't be scheduled automatically when constraints are satisfiable again + +- You will have to update the service; you can do a no-op udate with: + ```bash + docker service update ... --force + ``` + +.warning[Docker will silently ignore attemps to remove a non-existent label or constraint] + +- It won't warn you if you typo when removing a label or constraint! + +--- + # Node management - SwarmKit allows to change (almost?) everything on-the-fly