**Apache Airflow version**: latest

**What happened**:

There are more terminus task states than the ones we currently check in Docker Swarm Operator. This makes the operator run infinitely when the service goes into these states.
 
**What you expected to happen**:

The operator should terminate.

**How to reproduce it**:

Run a Airflow task via the Docker Swarm operator and return failed status code from it.


**Anything else we need to know**:

So as a fix I have added the complete list of tasks from the Docker reference (https://docs.docker.com/engine/swarm/how-swarm-mode-works/swarm-task-states/)
We would like to send this patch back upstream to Apache Airflow.

airflow/providers/docker/operators/docker_swarm.py
if self.enable_logging:
            self._stream_logs_to_output()
        while True:
            if self._has_service_terminated():
                self.log.info('Service status before exiting: %s', self._service_status())
                break
        if self.service and self._service_status() == 'failed':
            if self.auto_remove:
                self.cli.remove_service(self.service['ID'])
            raise AirflowException('Service failed: ' + repr(self.service))
        elif self.auto_remove:
            if not self.service:
                raise Exception("The 'service' should be initialized before!")
            self.cli.remove_service(self.service['ID'])
    def _service_status(self) -> Optional[str]:
        if not self.cli:
            raise Exception("The 'cli' should be initialized before!")
        return self.cli.tasks(filters={'service': self.service['ID']})[0]['Status']['State']
    def _has_service_terminated(self) -> bool:
        status = self._service_status()
        return status in ['failed', 'complete']
    def _stream_logs_to_output(self) -> None:
        if not self.cli:
            raise Exception("The 'cli' should be initialized before!")
        if not self.service:
            raise Exception("The 'service' should be initialized before!")
        logs = self.cli.service_logs(
            self.service['ID'], follow=True, stdout=True, stderr=True, is_tty=self.tty
        )
        line = ''