docker service ls

docker service ls

docker service ls는 Swarm에서 실행 중인 서비스를 나열하는 명령이에요. 서비스 목록과 각 서비스의 모드·복제본 수·이미지를 확인하고 싶을 때 써요.

출처: 문서

본문

이 명령은 swarm에서 실행 중인 서비스를 나열해요.

Swarm: 이 명령은 Swarm 오케스트레이터와 함께 작동해요.

참고: 이 명령은 클러스터 관리 명령이므로 Swarm 매니저 노드에서 실행해야 해요. 매니저와 워커에 대해 알아보려면 문서의 Swarm mode 섹션을 참고하세요.

사용법 (Usage)

docker service ls [OPTIONS]

별칭 (Aliases)

별칭은 긴 명령 대신 쓸 수 있는 짧고 기억하기 쉬운 대안이에요.

docker service list

옵션 (Options)

옵션 기본값 설명
-f, --filter 제공된 조건을 기반으로 출력을 필터링해요
--format 사용자 지정 템플릿으로 출력을 형식화해요: 'table': 열 머리글과 함께 테이블 형식으로 출력 (기본값). 'table TEMPLATE': 주어진 Go 템플릿을 사용해 테이블 형식으로 출력. 'json': JSON 형식으로 출력. 'TEMPLATE': 주어진 Go 템플릿으로 출력. 템플릿으로 출력 형식 지정에 대한 자세한 내용은 https://docs.docker.com/go/formatting/ 참고
-q, --quiet ID만 표시해요

예제 (Examples)

매니저 노드에서:

$ 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

REPLICAS 열은 서비스의 실제 및 원하는 태스크 수를 모두 보여 줘요. 서비스가 replicated-job 또는 global-job이면 job이 실행할 총 태스크 수에 대한 완료된 태스크로 job의 완료 상태도 추가로 보여 줘요.

필터링 (--filter)

필터링 플래그(-f 또는 --filter) 형식은 "key=value"예요. 필터가 둘 이상이면 여러 플래그를 전달해요 (예: --filter "foo=bar" --filter "bif=baz"). 현재 지원되는 필터는 다음과 같아요.

  • id
  • label
  • mode
  • name

id

id 필터는 서비스 ID의 전체 또는 접두사를 매칭해요. 다음 필터는 ID가 0bcjw로 시작하는 서비스를 매칭해요.

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

label

label 필터는 레이블의 존재만으로 또는 레이블과 값을 기준으로 서비스를 매칭해요. 다음 필터는 값에 관계없이 project 레이블이 있는 모든 서비스를 매칭해요.

$ 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

다음 필터는 project-a 값의 project 레이블이 있는 서비스만 매칭해요.

$ 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

mode 필터는 서비스의 모드(replicated 또는 global)를 매칭해요. 다음 필터는 전역 서비스만 매칭해요.

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

name

name 필터는 서비스 이름의 전체 또는 접두사를 매칭해요. 다음 필터는 이름이 redis로 시작하는 서비스를 매칭해요.

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

출력 형식 지정하기 (--format)

형식 옵션(--format)은 Go 템플릿을 사용해 서비스 출력을 예쁘게 출력해요. Go 템플릿의 유효한 플레이스홀더는 아래에 나열돼 있어요.

플레이스홀더 설명
.ID 서비스 ID
.Name 서비스 이름
.Mode 서비스 모드 (replicated, global)
.Replicas 서비스 복제본
.Image 서비스 이미지
.Ports ingress 모드로 게시된 서비스 포트

--format 옵션을 사용하면 service ls 명령은 템플릿이 선언한 대로 데이터를 출력하거나, table 지시어를 사용할 때 열 머리글도 포함해요. 다음 예제는 머리글 없이 템플릿을 사용해 모든 서비스의 ID, Mode, Replicas를 콜론(:)으로 구분해 출력해요.

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

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

모든 서비스를 JSON 형식으로 나열하려면 json 지시어를 사용해요.

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

더 알아보기 (Learn more)