docker service update
| Descripción | Actualiza un servicio |
|---|---|
| Uso | docker service update [OPTIONS] SERVICE |
Swarm Este comando funciona con el orquestador de Swarm.
Descripción
Actualiza un servicio según lo descrito por los parámetros especificados. Los parámetros son
los mismos que en
docker service create. Consulta la descripción
allí para obtener más información.
Normalmente, la actualización de un servicio solo hará que las tareas del servicio sean reemplazadas por otras nuevas si un cambio en el
servicio requiere recrear las tareas para que tenga efecto. Por ejemplo, solo cambiar la
configuración de --update-parallelism no recreará las tareas, porque las tareas individuales no se ven afectadas por esta
configuración. Sin embargo, el flag --force hará que las tareas se recreen de todos modos. Esto se puede utilizar para realizar un
reinicio continuo (rolling restart) sin realizar cambios en los parámetros del servicio.
NoteEste es un comando de gestión de clústeres y debe ejecutarse en un nodo administrador de Swarm (manager node). Para obtener más información sobre administradores y trabajadores, consulta la sección del modo Swarm en la documentación.
Opciones
| Opción | Predeterminado | Descripción |
|---|---|---|
--args | Argumentos del comando del servicio | |
--cap-add | API 1.41+ Añade capacidades de Linux | |
--cap-drop | API 1.41+ Elimina capacidades de Linux | |
--config-add | API 1.30+ Añade o actualiza un archivo de configuración en un servicio | |
--config-rm | API 1.30+ Elimina un archivo de configuración | |
--constraint-add | Añade o actualiza una restricción de ubicación | |
--constraint-rm | Elimina una restricción | |
--container-label-add | Añade o actualiza una etiqueta del contenedor | |
--container-label-rm | Elimina una etiqueta del contenedor por su clave | |
--credential-spec | API 1.29+ Especificación de credenciales para cuenta de servicio administrada (solo Windows) | |
-d, --detach | API 1.29+ Sale inmediatamente en lugar de esperar a que el servicio converja | |
--dns-add | API 1.25+ Añade o actualiza un servidor DNS personalizado | |
--dns-option-add | API 1.25+ Añade o actualiza una opción de DNS | |
--dns-option-rm | API 1.25+ Elimina una opción de DNS | |
--dns-rm | API 1.25+ Elimina un servidor DNS personalizado | |
--dns-search-add | API 1.25+ Añade o actualiza un dominio de búsqueda DNS personalizado | |
--dns-search-rm | API 1.25+ Elimina un dominio de búsqueda DNS | |
--endpoint-mode | Modo de endpoint (vip o dnsrr) | |
--entrypoint | Sobrescribe el ENTRYPOINT por defecto de la imagen | |
--env-add | Añade o actualiza una variable de entorno | |
--env-rm | Elimina una variable de entorno | |
--force | API 1.25+ Fuerza la actualización incluso si ningún cambio lo requiere | |
--generic-resource-add | API 1.32+ Añade un recurso genérico | |
--generic-resource-rm | API 1.32+ Elimina un recurso genérico | |
--group-add | API 1.25+ Añade un grupo de usuarios suplementario adicional al contenedor | |
--group-rm | API 1.25+
Elimina del contenedor un grupo de usuarios suplementario añadido previamente | |
--health-cmd | API 1.25+ Comando a ejecutar para comprobar el estado de salud | |
--health-interval | API 1.25+ Tiempo entre ejecuciones de la comprobación (ms|s|m|h) | |
--health-retries | API 1.25+ Fallos consecutivos necesarios para reportar un estado insalubre | |
--health-start-interval | API 1.44+ Tiempo entre ejecuciones de la comprobación durante el período de inicio (ms|s|m|h) | |
--health-start-period | API 1.29+
Período de inicio para que el contenedor se inicialice antes de comenzar la cuenta regresiva de reintentos de salud (ms|s|m|h) | |
--health-timeout | API 1.25+ Tiempo máximo permitido para que se ejecute una comprobación (ms|s|m|h) | |
--host-add | API 1.25+
Añade una asociación de host a IP personalizada (host:ip) | |
--host-rm | API 1.25+
Elimina una asociación de host a IP personalizada (host:ip) | |
--hostname | API 1.25+ Nombre de host del contenedor | |
--image | Etiqueta de la imagen del servicio | |
--init | API 1.37+
Utiliza un proceso init dentro de cada contenedor del servicio para reenviar señales y adoptar procesos huérfanos | |
--isolation | API 1.35+ Modo de aislamiento del contenedor del servicio | |
--label-add | Añade o actualiza una etiqueta del servicio | |
--label-rm | Elimina una etiqueta por su clave | |
--limit-cpu | Limita las CPUs | |
--limit-memory | Limita la memoria | |
--limit-pids | API 1.41+ Limita el número máximo de procesos (por defecto 0 = ilimitado) | |
--log-driver | Controlador de registro para el servicio | |
--log-opt | Opciones del controlador de registro | |
--max-concurrent | API 1.41+
Número de tareas de trabajo a ejecutar simultáneamente (por defecto es igual a --replicas) | |
--memory-swap | API 1.52+ Bytes de intercambio (swap) (-1 para ilimitado) | |
--memory-swappiness | -1 | API 1.52+ Ajusta la tendencia al intercambio (swappiness) de memoria (0-100), -1 para restablecer al valor predeterminado |
--mount-add | Añade o actualiza un montaje en un servicio | |
--mount-rm | Elimina un montaje por su ruta de destino | |
--network-add | API 1.29+ Añade una red | |
--network-rm | API 1.29+ Elimina una red | |
--no-healthcheck | API 1.25+ Deshabilita cualquier HEALTHCHECK especificado por el contenedor | |
--no-resolve-image | API 1.30+
No consulta el registro para resolver el digest de la imagen y las plataformas compatibles | |
--oom-score-adj | API 1.46+ Ajusta las preferencias OOM del host (-1000 a 1000) | |
--placement-pref-add | API 1.28+ Añade una preferencia de ubicación | |
--placement-pref-rm | API 1.28+ Elimina una preferencia de ubicación | |
--publish-add | Añade o actualiza un puerto publicado | |
--publish-rm | Elimina un puerto publicado por su puerto de destino | |
-q, --quiet | Suprime la salida del progreso | |
--read-only | API 1.28+ Monta el sistema de archivos raíz del contenedor como de solo lectura | |
--replicas | Número de tareas | |
--replicas-max-per-node | API 1.40+ Número máximo de tareas por nodo (por defecto 0 = ilimitado) | |
--reserve-cpu | Reserva CPUs | |
--reserve-memory | Reserva memoria | |
--restart-condition | Reinicia cuando se cumple la condición (none, on-failure, any) | |
--restart-delay | Retraso entre intentos de reinicio (ns|us|ms|s|m|h) | |
--restart-max-attempts | Número máximo de reinicios antes de darse por vencido | |
--restart-window | Ventana de tiempo utilizada para evaluar la política de reinicio (ns|us|ms|s|m|h) | |
--rollback | API 1.25+ Revierte a la especificación anterior | |
--rollback-delay | API 1.28+ Retraso entre reversiones (rollbacks) de tareas (ns|us|ms|s|m|h) | |
--rollback-failure-action | API 1.28+
Acción ante un fallo en la reversión (rollback) (pause, continue) | |
--rollback-max-failure-ratio | API 1.28+ Tasa de fallos tolerada durante una reversión (rollback) | |
--rollback-monitor | API 1.28+
Duración después de cada reversión (rollback) de tarea para monitorear fallos (ns|us|ms|s|m|h) | |
--rollback-order | API 1.29+
Orden de reversión (rollback) (start-first, stop-first) | |
--rollback-parallelism | API 1.28+
Número máximo de tareas revertidas (rolled back) simultáneamente (0 para revertir todas a la vez) | |
--secret-add | API 1.25+ Añade o actualiza un secreto en un servicio | |
--secret-rm | API 1.25+ Elimina un secreto | |
--stop-grace-period | Tiempo a esperar antes de forzar la finalización de un contenedor (ns|us|ms|s|m|h) | |
--stop-signal | API 1.28+ Señal para detener el contenedor | |
--sysctl-add | API 1.40+ Añade o actualiza una opción de Sysctl | |
--sysctl-rm | API 1.40+ Elimina una opción de Sysctl | |
-t, --tty | API 1.25+ Asigna un pseudo-TTY | |
--ulimit-add | API 1.41+ Añade o actualiza una opción de ulimit | |
--ulimit-rm | API 1.41+ Elimina una opción de ulimit | |
--update-delay | Retraso entre actualizaciones (ns|us|ms|s|m|h) | |
--update-failure-action | Acción ante un fallo en la actualización (pause, continue, rollback) | |
--update-max-failure-ratio | API 1.25+ Tasa de fallos tolerada durante una actualización | |
--update-monitor | API 1.25+
Duración después de cada actualización de tarea para monitorear fallos (ns|us|ms|s|m|h) | |
--update-order | API 1.29+
Orden de actualización (start-first, stop-first) | |
--update-parallelism | Número máximo de tareas actualizadas simultáneamente (0 para actualizar todas a la vez) | |
-u, --user | Nombre de usuario o UID (formato: <nombre|uid>[:<grupo|gid>]) | |
--with-registry-auth | Envía detalles de autenticación del registro a los agentes de swarm | |
-w, --workdir | Directorio de trabajo dentro del contenedor |
Ejemplos
Actualizar un servicio
$ docker service update --limit-cpu 2 redis
Realizar un reinicio continuo (rolling restart) sin cambios en los parámetros
$ docker service update --force --update-parallelism 1 --update-delay 30s redis
En este ejemplo, el flag --force hace que las tareas del servicio se detengan
y sean reemplazadas por otras nuevas, aunque normalmente ninguno de los otros parámetros
provocaría que eso sucediera. La opción --update-parallelism 1 asegura
que solo se reemplace una tarea a la vez (este es el comportamiento predeterminado). La
opción --update-delay 30s introduce un retraso de 30 segundos entre tareas, de modo
que el reinicio continuo se realice de manera gradual.
Añadir o eliminar montajes (--mount-add, --mount-rm)
Utiliza las opciones --mount-add o --mount-rm para añadir o eliminar montajes vinculados (bind mounts)
o volúmenes de un servicio.
El siguiente ejemplo crea un servicio que monta el volumen test-data en
/somewhere. El paso siguiente actualiza el servicio para montar también el volumen
other-volume en /somewhere-else. El último paso desmonta el punto de montaje /somewhere,
eliminando eficazmente el volumen test-data. Cada comando devuelve el nombre
del servicio.
El flag
--mount-addtoma los mismos parámetros que el flag--mountenservice create. Consulta la sección de volúmenes y montajes vinculados en la referencia deservice createpara obtener más detalles.El flag
--mount-rmtoma la ruta dedestino(target) del montaje.
$ docker service create \
--name=myservice \
--mount type=volume,source=test-data,target=/somewhere \
nginx:alpine
myservice
$ docker service update \
--mount-add type=volume,source=other-volume,target=/somewhere-else \
myservice
myservice
$ docker service update --mount-rm /somewhere myservice
myservice
Añadir o eliminar puertos de servicio publicados (--publish-add, --publish-rm)
Utiliza los flags --publish-add o --publish-rm para añadir o eliminar un puerto publicado
para un servicio. Puedes utilizar la sintaxis corta o larga descrita en la referencia de
docker service create.
El siguiente ejemplo añade un puerto de servicio publicado a un servicio existente.
$ docker service update \
--publish-add published=8080,target=80 \
myservice
Añadir o eliminar red (--network-add, --network-rm)
Utiliza los flags --network-add o --network-rm para añadir o eliminar una red para
un servicio. Puedes utilizar la sintaxis corta o larga descrita en la referencia de
docker service create.
El siguiente ejemplo añade un nuevo nombre de alias a un servicio existente que ya está conectado a la red my-network:
$ docker service update \
--network-rm my-network \
--network-add name=my-network,alias=web1 \
myservice
Revertir a la versión anterior de un servicio (--rollback)
Utiliza la opción --rollback para revertir a la versión anterior del servicio.
Esto restaurará el servicio a la configuración que tenía antes del comando docker service update más reciente.
El siguiente ejemplo actualiza el número de réplicas para el servicio de 4 a 5, y luego revierte a la configuración anterior.
$ docker service update --replicas=5 web
web
$ docker service ls
ID NAME MODE REPLICAS IMAGE
80bvrzp6vxf3 web replicated 0/5 nginx:alpine
El siguiente ejemplo revierte el servicio web:
$ docker service update --rollback web
web
$ docker service ls
ID NAME MODE REPLICAS IMAGE
80bvrzp6vxf3 web replicated 0/4 nginx:alpine
También se pueden combinar otras opciones con --rollback, por ejemplo, --update-delay 0s para ejecutar la reversión sin retraso entre tareas:
$ docker service update \
--rollback \
--update-delay 0s \
web
web
Los servicios también se pueden configurar para revertirse a la versión anterior automáticamente
cuando falla una actualización. Para configurar un servicio para la reversión automática, utiliza
--update-failure-action=rollback. Se activará una reversión si la fracción
de las tareas que no se actualizaron correctamente supera el valor proporcionado con
--update-max-failure-ratio.
La velocidad, el paralelismo y otros parámetros de una operación de reversión se determinan por los valores pasados con los siguientes flags:
--rollback-delay--rollback-failure-action--rollback-max-failure-ratio--rollback-monitor--rollback-parallelism
Por ejemplo, un servicio configurado con --update-parallelism 1 --rollback-parallelism 3
actualizará una tarea a la vez durante una actualización normal, pero durante una reversión, se
revertirán 3 tareas a la vez. Estos parámetros de reversión se respetan tanto
durante las reversiones automáticas como para las reversiones iniciadas manualmente utilizando --rollback.
Añadir o eliminar secretos (--secret-add, --secret-rm)
Utiliza las opciones --secret-add o --secret-rm para añadir o eliminar secretos de
un servicio.
El siguiente ejemplo añade un secreto llamado ssh-2 y elimina ssh-1:
$ docker service update \
--secret-add source=ssh-2,target=ssh-2 \
--secret-rm ssh-1 \
myservice
Actualizar servicios utilizando plantillas
Algunos flags de service update admiten el uso de plantillas.
Consulta
service create para obtener la referencia.
Especificar el modo de aislamiento en Windows (--isolation)
service update admite el mismo flag --isolation que service create.
Consulta
service create para obtener la referencia.
Actualizar trabajos (Jobs)
Cuando un servicio se crea como un trabajo, estableciendo su modo a replicated-job o
a global-job al hacer service create, las opciones para actualizarlo están
limitadas.
La actualización de un trabajo detiene inmediatamente cualquier tarea que esté en progreso. La operación crea un nuevo conjunto de tareas para el trabajo y restablece eficazmente su estado de finalización. Si había tareas ejecutándose antes de la actualización, estas se detienen y se crean nuevas tareas.
Los trabajos no se pueden implementar ni revertir progresivamente. Ninguno de los flags para configurar los ajustes de actualización o reversión es válido con los modos de trabajo.
Para ejecutar un trabajo de nuevo con los mismos parámetros que se ejecutó anteriormente, se puede
forzar su actualización con el flag --force.