1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00
moby--moby/docs/reference/commandline/service_update.md
Aaron Lehmann 6d4b527699 Service update failure thresholds and rollback
This adds support for two enhancements to swarm service rolling updates:

- Failure thresholds: In Docker 1.12, a service update could be set up
  to either pause or continue after a single failure occurs. This adds
  an --update-max-failure-ratio flag that controls how many tasks need to
  fail to update for the update as a whole to be considered a failure. A
  counterpart flag, --update-monitor, controls how long to monitor each
  task for a failure after starting it during the update.

- Rollback flag: service update --rollback reverts the service to its
  previous version. If a service update encounters task failures, or
  fails to function properly for some other reason, the user can roll back
  the update.

SwarmKit also has the ability to roll back updates automatically after
hitting the failure thresholds, but we've decided not to expose this in
the Docker API/CLI for now, favoring a workflow where the decision to
roll back is always made by an admin. Depending on user feedback, we may
add a "rollback" option to --update-failure-action in the future.

Signed-off-by: Aaron Lehmann <aaron.lehmann@docker.com>
2016-10-18 10:09:50 -07:00

5.1 KiB

title description keywords
service update The service update command description and usage
service, update

service update

Usage:  docker service update [OPTIONS] SERVICE

Update a service

Options:
      --args string                      Service command args
      --constraint-add value             Add or update placement constraints (default [])
      --constraint-rm value              Remove a constraint (default [])
      --container-label-add value        Add or update container labels (default [])
      --container-label-rm value         Remove a container label by its key (default [])
      --endpoint-mode string             Endpoint mode (vip or dnsrr)
      --env-add value                    Add or update environment variables (default [])
      --env-rm value                     Remove an environment variable (default [])
      --group-add value                  Add additional user groups to the container (default [])
      --group-rm value                   Remove previously added user groups from the container (default [])
      --help                             Print usage
      --image string                     Service image tag
      --label-add value                  Add or update service labels (default [])
      --label-rm value                   Remove a label by its key (default [])
      --limit-cpu value                  Limit CPUs (default 0.000)
      --limit-memory value               Limit Memory (default 0 B)
      --log-driver string                Logging driver for service
      --log-opt value                    Logging driver options (default [])
      --mount-add value                  Add or update a mount on a service
      --mount-rm value                   Remove a mount by its target path (default [])
      --name string                      Service name
      --publish-add value                Add or update a published port (default [])
      --publish-rm value                 Remove a published port by its target port (default [])
      --replicas value                   Number of tasks (default none)
      --reserve-cpu value                Reserve CPUs (default 0.000)
      --reserve-memory value             Reserve Memory (default 0 B)
      --restart-condition string         Restart when condition is met (none, on-failure, or any)
      --restart-delay value              Delay between restart attempts (default none)
      --restart-max-attempts value       Maximum number of restarts before giving up (default none)
      --restart-window value             Window used to evaluate the restart policy (default none)
      --rollback                         Rollback to previous specification
      --stop-grace-period value          Time to wait before force killing a container (default none)
      --update-delay duration            Delay between updates
      --update-failure-action string     Action on update failure (pause|continue) (default "pause")
      --update-max-failure-ratio value   Failure rate to tolerate during an update
      --update-monitor duration          Duration after each task update to monitor for failure (default 0s)
      --update-parallelism uint          Maximum number of tasks updated simultaneously (0 to update all at once) (default 1)
  -u, --user string                      Username or UID (format: <name|uid>[:<group|gid>])
      --with-registry-auth               Send registry authentication details to Swarm agents
  -w, --workdir string                   Working directory inside the container

Updates a service as described by the specified parameters. This command has to be run targeting a manager node. The parameters are the same as docker service create. Please look at the description there for further information.

Examples

Update a service

$ docker service update --limit-cpu 2 redis

Adding and removing mounts

Use the --mount-add or --mount-rm options add or remove a service's bind-mounts or volumes.

The following example creates a service which mounts the test-data volume to /somewhere. The next step updates the service to also mount the other-volume volume to /somewhere-elsevolume, The last step unmounts the /somewhere mount point, effectively removing the test-data volume. Each command returns the service name.

  • The --mount-add flag takes the same parameters as the --mount flag on service create. Refer to the volumes and bind-mounts section in the service create reference for details.

  • The --mount-rm flag takes the target path of the mount.

$ docker service create \
    --name=myservice \
    --mount \
      type=volume,source=test-data,target=/somewhere \
    nginx:alpine \
    myservice

myservice

$ docker service update \
    --mount-add \
      type=volume,source=other-volume,target=/somewhere-else \
    myservice

myservice

$ docker service update --mount-rm /somewhere myservice

myservice