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"). 현재 지원되는 필터는 다음과 같아요.
idlabelmodename
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"}