# Estados de las tareas de Swarm


Docker te permite crear servicios, los cuales pueden iniciar tareas. Un servicio es una descripción de un estado deseado, y una tarea realiza el trabajo. El trabajo se programa en los nodos del swarm en esta secuencia:

1.  Crea un servicio mediante el uso de `docker service create`.
2.  La solicitud se dirige a un nodo administrador de Docker.
3.  El nodo administrador de Docker programa el servicio para que se ejecute en nodos específicos.
4.  Cada servicio puede iniciar varias tareas.
5.  Cada tarea tiene un ciclo de vida, con estados como `NEW`, `PENDING` y `COMPLETE`.

Las tareas son unidades de ejecución que se ejecutan una vez hasta completarse. Cuando una tarea se detiene, no se vuelve a ejecutar, pero una nueva tarea puede ocupar su lugar.

Las tareas avanzan a través de una serie de estados hasta que se completan o fallan. Las tareas se inicializan en el estado `NEW`. La tarea progresa hacia adelante a través de varios estados, y su estado no retrocede. Por ejemplo, una tarea nunca pasa de `COMPLETE` a `RUNNING`.

Las tareas pasan por los estados en el siguiente orden:

| Estado de la tarea  | Descripción                                                                                                 |
| ------------------- | ----------------------------------------------------------------------------------------------------------- |
| `NEW`               | La tarea fue inicializada.                                                                                  |
| `PENDING`           | Se asignaron los recursos para la tarea.                                                                    |
| `ASSIGNED`          | Docker asignó la tarea a los nodos.                                                                         |
| `ACCEPTED`          | La tarea fue aceptada por un nodo trabajador. Si un nodo trabajador rechaza la tarea, el estado cambia a `REJECTED`. |
| `READY`             | El nodo trabajador está listo para iniciar la tarea.                                                        |
| `PREPARING`         | Docker está preparando la tarea.                                                                            |
| `STARTING`          | Docker está iniciando la tarea.                                                                             |
| `RUNNING`           | La tarea se está ejecutando.                                                                                |
| `COMPLETE`          | La tarea finalizó sin un código de error.                                                                   |
| `FAILED`            | La tarea finalizó con un código de error.                                                                   |
| `SHUTDOWN`          | Docker solicitó que la tarea se apagara.                                                                    |
| `REJECTED`          | El nodo trabajador rechazó la tarea.                                                                        |
| `ORPHANED`          | El nodo estuvo fuera de servicio durante demasiado tiempo.                                                   |
| `REMOVE`            | La tarea no es terminal, pero el servicio asociado fue eliminado o se redujo su escala (scaled down).        |

## Ver el estado de la tarea

Ejecuta `docker service ps <service-name>` para obtener el estado de una tarea. El campo `CURRENT STATE` muestra el estado de la tarea y cuánto tiempo lleva en ese estado.

```console
$ docker service ps webserver
ID             NAME              IMAGE    NODE        DESIRED STATE  CURRENT STATE            ERROR                              PORTS
owsz0yp6z375   webserver.1       nginx    UbuntuVM    Running        Running 44 seconds ago
j91iahr8s74p    \_ webserver.1   nginx    UbuntuVM    Shutdown       Failed 50 seconds ago    "No such container: webserver.…"
7dyaszg13mw2    \_ webserver.1   nginx    UbuntuVM    Shutdown       Failed 5 hours ago       "No such container: webserver.…"
```

## Siguientes pasos

- [Aprender sobre las tareas de swarm](https://github.com/moby/swarmkit/blob/master/design/task_model.md)

