docker service ls

DescriptionList services
Usagedocker service ls [OPTIONS]
Aliases
docker service list

Swarm This command works with the Swarm orchestrator.

Description

This command lists services that are running in the swarm.

Note

This is a cluster management command, and must be executed on a swarm manager node. To learn about managers and workers, refer to the Swarm mode section in the documentation.

Options

OptionDefaultDescription
-f, --filterFilter output based on conditions provided
--formatFormat output using a custom template:
'table': Print output in table format with column headers (default)
'table TEMPLATE': Print output in table format using the given Go template
'json': Print in JSON format
'TEMPLATE': Print output using the given Go template.
Refer to https://docs.docker.com/go/formatting/ for more information about formatting output with templates
-q, --quietOnly display IDs

Examples

On a manager node:

$ docker service ls

ID            NAME      MODE            REPLICAS             IMAGE
c8wgl7q4ndfd  frontend  replicated      5/5                  nginx:alpine
dmu1ept4cxcf  redis     replicated      3/3                  redis:7.4.1
iwe3278osahj  mongo     global          7/7                  mongo:3.3
hh08h9uu8uwr  job       replicated-job  1/1 (3/5 completed)  nginx:latest

The REPLICAS column shows both the actual and desired number of tasks for the service. If the service is in replicated-job or global-job, it will additionally show the completion status of the job as completed tasks over total tasks the job will execute.

Filtering (--filter)

The filtering flag (-f or --filter) format is of "key=value". If there is more than one filter, then pass multiple flags (e.g., --filter "foo=bar" --filter "bif=baz").

The currently supported filters are:

id

The id filter matches all or the prefix of a service's ID.

The following filter matches services with an ID starting with 0bcjw:

$ docker service ls -f "id=0bcjw"
ID            NAME   MODE        REPLICAS  IMAGE
0bcjwfh8ychr  redis  replicated  1/1       redis:7.4.1

label

The label filter matches services based on the presence of a label alone or a label and a value.

The following filter matches all services with a project label regardless of its value:

$ docker service ls --filter label=project
ID            NAME       MODE        REPLICAS  IMAGE
01sl1rp6nj5u  frontend2  replicated  1/1       nginx:alpine
36xvvwwauej0  frontend   replicated  5/5       nginx:alpine
74nzcxxjv6fq  backend    replicated  3/3       redis:7.4.1

The following filter matches only services with the project label with the project-a value.

$ docker service ls --filter label=project=project-a
ID            NAME      MODE        REPLICAS  IMAGE
36xvvwwauej0  frontend  replicated  5/5       nginx:alpine
74nzcxxjv6fq  backend   replicated  3/3       redis:7.4.1

mode

The mode filter matches on the mode (either replicated or global) of a service.

The following filter matches only global services.

$ docker service ls --filter mode=global
ID                  NAME                MODE                REPLICAS            IMAGE
w7y0v2yrn620        top                 global              1/1                 busybox

name

The name filter matches on all or the prefix of a service's name.

The following filter matches services with a name starting with redis.

$ docker service ls --filter name=redis
ID            NAME   MODE        REPLICAS  IMAGE
0bcjwfh8ychr  redis  replicated  1/1       redis:7.4.1

Format the output (--format)

The formatting options (--format) pretty-prints services output using a Go template.

Valid placeholders for the Go template are listed below:

PlaceholderDescription
.IDService ID
.NameService name
.ModeService mode (replicated, global)
.ReplicasService replicas
.ImageService image
.PortsService ports published in ingress mode

When using the --format option, the service ls command will either output the data exactly as the template declares or, when using the table directive, includes column headers as well.

The following example uses a template without headers and outputs the ID, Mode, and Replicas entries separated by a colon (:) for all services:

$ docker service ls --format "{{.ID}}: {{.Mode}} {{.Replicas}}"

0zmvwuiu3vue: replicated 10/10
fm6uf97exkul: global 5/5

To list all services in JSON format, use the json directive:

$ docker service ls --format json
{"ID":"ssniordqolsi","Image":"hello-world:latest","Mode":"replicated","Name":"hello","Ports":"","Replicas":"0/1"}