Service Updates

  • Provides rolling replacement of tasks/containers in a service

  • Limits downtime (be careful with "prevent" downtime)

  • Will replace containers for most changes

  • Has many, many cli options to control the update

  • Create options will usually change, adding -add or -rm to them

  • Includes rollback and healthcheck options

  • Also has scale & rollback subcommand for quicker access

    • docker service scale web=4 and docker service rollback web

  • A stack deploy, when pre-existing, will issue service updates

Update Examples

  • Just update the image used to a newer version

docker service update --image myapp:1.2.1 <servicename>
  • Adding an environment variable and remove a port

docker service update --env-add NODE_ENV=production --publish-rm 8080
  • Change number of replicas of two services

docker service scale web=8 api=6

Updates in Stack Files

  • Same command. Just edit the YAML file, then

docker stack deploy -c file.yml <stackname>

Some other examples

[node1] ~> docker service create -p 8088:80 --name web nginx:1.13.7
ptc2b8k6enqrsdoegmga7fgnd
overall progress: 1 out of 1 tasks
1/1: running   [==================================================>]
verify: Service converged

[node1] ~> docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
ptc2b8k6enqr        web                 replicated          1/1                 nginx:1.13.7        *:8088->80/tcp

[node1] ~> docker service scale web=5
web scaled to 5
overall progress: 5 out of 5 tasks
1/5: running   [==================================================>]
2/5: running   [==================================================>]
3/5: running   [==================================================>]
4/5: running   [==================================================>]
5/5: running   [==================================================>]
verify: Service converged

[node1] ~> docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
ptc2b8k6enqr        web                 replicated          5/5                 nginx:1.13.7        *:8088->80/tcp

[node1] ~> docker service update --image nginx:1.13.6 web
web
overall progress: 5 out of 5 tasks
1/5: running   [==================================================>]
2/5: running   [==================================================>]
3/5: running   [==================================================>]
4/5: running   [==================================================>]
5/5: running   [==================================================>]
verify: Service converged

[node1] ~> docker service update --publish-rm 8088 --publish-add 9090:80 web
web
overall progress: 5 out of 5 tasks
1/5: running   [==================================================>]
2/5: running   [==================================================>]
3/5: running   [==================================================>]
4/5: running   [==================================================>]
5/5: running   [==================================================>]
verify: Service converged

[node1] ~> docker service update --force web
docker service update --force web
web
overall progress: 5 out of 5 tasks
1/5: running   [==================================================>]
2/5: running   [==================================================>]
3/5: running   [==================================================>]
4/5: running   [==================================================>]
5/5: running   [==================================================>]
verify: Service converged

https://docs.docker.com/engine/reference/commandline/service_update/

Last updated

Was this helpful?