Home Explore Blog Models CI



docker

1st chunk of `content/manuals/engine/swarm/how-swarm-mode-works/services.md`
43a3e3085d1f3cd744ea5dfef1ebc3b87e87252873b890470000000100000c49
---
description: How swarm mode services work
keywords: docker, container, cluster, swarm mode, node
title: How services work
weight: 20
---

To deploy an application image when Docker Engine is in Swarm mode, you create a
service. Frequently a service is the image for a microservice within the
context of some larger application. Examples of services might include an HTTP
server, a database, or any other type of executable program that you wish to run
in a distributed environment.

When you create a service, you specify which container image to use and which
commands to execute inside running containers. You also define options for the
service including:

* The port where the swarm makes the service available outside the swarm
* An overlay network for the service to connect to other services in the swarm
* CPU and memory limits and reservations
* A rolling update policy
* The number of replicas of the image to run in the swarm

## Services, tasks, and containers

When you deploy the service to the swarm, the swarm manager accepts your service
definition as the desired state for the service. Then it schedules the service
on nodes in the swarm as one or more replica tasks. The tasks run independently
of each other on nodes in the swarm.

For example, imagine you want to load balance between three instances of an HTTP
listener. The diagram below shows an HTTP listener service with three replicas.
Each of the three instances of the listener is a task in the swarm.

![ HTTP listener service with three replicas](/Users/baehyunsol/Documents/Rust/ragit/sample/docker/content/manuals/engine/swarm/how-swarm-mode-works/../images/services-diagram.webp?w=550)

A container is an isolated process. In the Swarm mode model, each task invokes
exactly one container. A task is analogous to a “slot” where the scheduler
places a container. Once the container is live, the scheduler recognizes that
the task is in a running state. If the container fails health checks or
terminates, the task terminates.

## Tasks and scheduling

A task is the atomic unit of scheduling within a swarm. When you declare a
desired service state by creating or updating a service, the orchestrator
realizes the desired state by scheduling tasks. For instance, you define a
service that instructs the orchestrator to keep three instances of an HTTP
listener running at all times. The orchestrator responds by creating three
tasks. Each task is a slot that the scheduler fills by spawning a container. The
container is the instantiation of the task. If an HTTP listener task subsequently
fails its health check or crashes, the orchestrator creates a new replica task
that spawns a new container.

A task is a one-directional mechanism. It progresses monotonically through a
series of states: assigned, prepared, running, etc. If the task fails, the
orchestrator removes the task and its container and then creates a new task to
replace it according to the desired state specified by the service.

The underlying logic of Docker's Swarm mode is a general purpose scheduler and
orchestrator. The service and task abstractions themselves are unaware of the

Title: How Swarm Mode Services Work: Services, Tasks, and Containers
Summary
This section explains how services work in Docker Swarm mode. A service represents an application image, defining the container image, commands, and service options like ports, networks, resource limits, and update policies. When deployed, the swarm manager schedules the service as one or more replica tasks on swarm nodes. Each task runs independently within a container, which is an isolated process. Tasks are the atomic unit of scheduling, progressing through states like assigned, prepared, and running. If a task fails, the orchestrator replaces it with a new one to maintain the desired service state.