Docker Swarm is a popular container orchestration tool that allows you to manage a cluster of Docker hosts. It enables easy deployment and scaling of applications across multiple nodes in a cluster. Services and tasks are two key concepts in Docker Swarm that help manage containers on a cluster.

This blog will discuss how to use services and tasks in Docker Swarm. As a prerequisite, you will need Docker to get started.

Services in Docker Swarm

A service in Docker Swarm is an abstraction of a group of containers that work together to perform a specific function. Services define the desired state of the containers, such as the number of replicas, network settings, and resource limits.

Docker Swarm uses a scheduling algorithm to distribute the containers across the cluster. Services can be used to deploy any application, such as web servers, databases, or messaging queues.

Creating a Service

To create a service in Docker Swarm, we use the docker service create command followed by the name of the service and the image that should be used for the containers. For example, to create a service named web that uses the nginx image, we would use the following command:

docker service create --name web nginx

By default, Docker Swarm will create one replica of the service, which means one container running the nginx image. We can scale the service by increasing the number of replicas using the --replicas flag.

docker service create --name web --replicas 3 nginx

This command will create a service named web that runs three replicas of the nginx image.

Updating a Service

We can update the configuration of a service in Docker Swarm using the docker service update command. For example, to update the number of replicas of the web service to 5, we would use the following command:

docker service update --replicas 5 web

This command will update the web service to run five replicas of the nginx image. We can also update other service configurations, such as the image version, environment variables, and network settings.

Viewing the Services

We use the docker service ls command to view the services running on a Docker Swarm cluster, w. This command will show us the list of services running on the cluster, including the name, number of replicas, image, etc. For example, to view the services running on a cluster, we use the following command:

docker service ls

This command will show us the list of services running on the cluster, including the web service we created earlier.

Viewing Service Logs

There can be times when our application is not running as we intend it to. In such instances, logs are our best friend as they can help us pinpoint the error and update the service with a new image free of such errors. This can be achieved using the docker service logs command.

For example, if we want to view the web service logs, we can run the command below to view the service logs.

docker service logs --follow web

Inspecting Services

The docker service inspect command can be used to display detailed information on the different services that may be present in your Swarm. This command will provide all the service details in JSON format by default. However, the format is changeable and can also be prettified.

For example, to view details of the service web, we can use the command below.

docker service inspect web

Tasks in Docker Swarm

A task in Docker Swarm is a running container that is part of a service. Docker Swarm schedules the tasks across the nodes in the cluster to balance the workload. Each task is assigned a unique identifier, and Docker Swarm monitors the state of the tasks to ensure they are running as expected.

Viewing the Tasks

To view the tasks running on a Docker Swarm cluster, we use the docker service ps command followed by the name of the service. This command will show us the tasks running for the service, including the container ID, the node where the container is running, and the current status of the container. For example, to view the tasks running for the web service, we use the following command:

docker service ps web

Updating the Tasks

Tasks in Docker Swarm are managed by the Docker engine on each node. When a service is updated, Docker Swarm will create new tasks with the updated configuration and remove the old tasks. This process is called rolling updates and ensures that the service remains available during the update.

To update a service in Docker Swarm, we use the docker service update command. For example, to update the web service with a new image, we would use the following command:

docker service update --image nginx:latest web

This command will update the web service with the latest version of the nginx image.

Removing the Tasks

The docker service rm command can remove the tasks running on each node, t. Docker Swarm will remove all the running tasks. This ensures that unrequired services are removed, and resources are freed up for the required services.

For example, to remove the web services, we use the following command:

docker service rm web

Run the following command to verify that the service has been removed.

docker service ls

Rollback in Docker Swarm

Rollback in Docker Swarm allows us to revert to a previous version of a service if there are issues with the updated version. To rollback a service in Docker Swarm, we use the docker service update command with the --rollback flag, followed by the name of the service.

For example, to rollback the web service to the previous version, we use the following command:

docker service update --rollback web

This command will revert the web service to the previous version and create new tasks with the old configuration.

Lastly,

Services and tasks are essential concepts in Docker Swarm that enable easy deployment and management of containers across a cluster of Docker hosts. Services allow us to define the desired state of the containers, and tasks represent the running containers that make up the service.

Docker Swarm uses a scheduling algorithm to distribute the tasks across the cluster, ensuring the workload is balanced. With the docker service and docker service update commands, we can create, manage, and update services and tasks in Docker Swarm.

Additionally, the docker service ps command allows us to view the tasks running for a service, and the docker service update --rollback command enables us to rollback to a previous version of a service if there are issues with the updated version.

Please comment below if you have any queries, this article is updated periodically to ensure legibility.