docker service ps
docker service ps
docker service ps는 하나 이상의 서비스의 태스크를 나열하는 명령이에요. Swarm 서비스의 개별 태스크 상태와 실행 상황을 확인하고 싶을 때 써요.
출처: 문서
본문
지정된 서비스의 일부로 실행 중인 태스크를 나열해요.
Swarm: 이 명령은 Swarm 오케스트레이터와 함께 작동해요.
참고: 이 명령은 클러스터 관리 명령이므로 Swarm 매니저 노드에서 실행해야 해요. 매니저와 워커에 대해 알아보려면 문서의 Swarm mode 섹션을 참고하세요.
사용법 (Usage)
docker service ps [OPTIONS] SERVICE [SERVICE...]
옵션 (Options)
| 옵션 | 기본값 | 설명 |
|---|---|---|
-f, --filter |
제공된 조건을 기반으로 출력을 필터링해요 | |
--format |
Go 템플릿을 사용해 태스크를 예쁘게 출력해요 | |
--no-resolve |
ID를 이름으로 매핑하지 않아요 | |
--no-trunc |
출력을 자르지 않아요 | |
-q, --quiet |
태스크 ID만 표시해요 |
예제 (Examples)
서비스의 일부인 태스크 나열하기
다음 명령은 redis 서비스의 일부인 모든 태스크를 보여 줘요.
$ docker service ps redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
0qihejybwf1x redis.1 redis:7.4.0 manager1 Running Running 8 seconds
bk658fpbex0d redis.2 redis:7.4.0 worker2 Running Running 9 seconds
5ls5s5fldaqg redis.3 redis:7.4.0 worker1 Running Running 9 seconds
8ryt076polmc redis.4 redis:7.4.0 worker1 Running Running 9 seconds
1x0v8yomsncd redis.5 redis:7.4.0 manager1 Running Running 8 seconds
71v7je3el7rr redis.6 redis:7.4.0 worker2 Running Running 9 seconds
4l3zm9b7tfr7 redis.7 redis:7.4.0 worker2 Running Running 9 seconds
9tfpyixiy2i7 redis.8 redis:7.4.0 worker1 Running Running 9 seconds
3w1wu13yupln redis.9 redis:7.4.0 manager1 Running Running 8 seconds
8eaxrb2fqpbn redis.10 redis:7.4.0 manager1 Running Running 8 seconds
실행 중인 태스크 외에도 출력에는 태스크 기록(history)도 표시돼요. 예를 들어 서비스를 redis:7.4.1 이미지로 업데이트한 후 출력은 다음과 같을 수 있어요.
$ docker service ps redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
50qe8lfnxaxk redis.1 redis:7.4.1 manager1 Running Running 6 seconds ago
ky2re9oz86r9 \_ redis.1 redis:7.4.0 manager1 Shutdown Shutdown 8 seconds ago
3s46te2nzl4i redis.2 redis:7.4.1 worker2 Running Running less than a second ago
nvjljf7rmor4 \_ redis.2 redis:7.4.1 worker2 Shutdown Rejected 23 seconds ago "No such image: redis@sha256:6…"
vtiuz2fpc0yb \_ redis.2 redis:7.4.0 worker2 Shutdown Shutdown 1 second ago
jnarweeha8x4 redis.3 redis:7.4.1 worker1 Running Running 3 seconds ago
vs448yca2nz4 \_ redis.3 redis:7.4.0 worker1 Shutdown Shutdown 4 seconds ago
jf1i992619ir redis.4 redis:7.4.1 worker1 Running Running 10 seconds ago
blkttv7zs8ee \_ redis.4 redis:7.4.0 worker1 Shutdown Shutdown 11 seconds ago
태스크 기록의 항목 수는 swarm을 초기화할 때 설정했던 --task-history-limit 옵션에 의해 결정돼요. 태스크 기록 보존 한도를 docker swarm update 명령으로 변경할 수 있어요. 서비스를 배포할 때 docker는 서비스 이미지의 digest를 확인하고 서비스를 그 digest에 고정해요. digest는 기본적으로 표시되지 않지만 --no-trunc을 사용하면 출력돼요. --no-trunc 옵션은 잘리지 않은 태스크 ID와 오류 메시지도 보여 줘요. 다음 예제에서 볼 수 있어요.
$ docker service ps --no-trunc redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
50qe8lfnxaxksi9w2a704wkp7 redis.1 redis:7.4.1@sha256:6a692a76c2081888b589e26e6ec835743119fe453d67ecf03df7de5b73d69842 manager1 Running Running 5 minutes ago
ky2re9oz86r9556i2szb8a8af \_ redis.1 redis:7.4.0@sha256:f8829e00d95672c48c60f468329d6693c4bdd28d1f057e755f8ba8b40008682e worker2 Shutdown Shutdown 5 minutes ago
bk658fpbex0d57cqcwoe3jthu redis.2 redis:7.4.1@sha256:6a692a76c2081888b589e26e6ec835743119fe453d67ecf03df7de5b73d69842 worker2 Running Running 5 seconds
nvjljf7rmor4htv7l8rwcx7i7 \_ redis.2 redis:7.4.1@sha256:6a692a76c2081888b589e26e6ec835743119fe453d67ecf03df7de5b73d69842 worker2 Shutdown Rejected 5 minutes ago "No such image: redis@sha256:6a692a76c2081888b589e26e6ec835743119fe453d67ecf03df7de5b73d69842"
필터링 (--filter)
필터링 플래그(-f 또는 --filter) 형식은 key=value 쌍이에요. 필터가 둘 이상이면 여러 플래그를 전달해요 (예: --filter "foo=bar" --filter "bif=baz"). 여러 필터 플래그는 OR 필터로 결합돼요. 예를 들어 -f name=redis.1 -f name=redis.7은 redis.1과 redis.7 태스크를 모두 반환해요. 현재 지원되는 필터는 다음과 같아요.
idnamenodedesired-state
id
id 필터는 태스크 ID의 전체 또는 접두사를 매칭해요.
$ docker service ps -f "id=8" redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
8ryt076polmc redis.4 redis:7.4.1 worker1 Running Running 9 seconds
8eaxrb2fqpbn redis.10 redis:7.4.1 manager1 Running Running 8 seconds
name
name 필터는 태스크 이름을 매칭해요.
$ docker service ps -f "name=redis.1" redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
qihejybwf1x5 redis.1 redis:7.4.1 manager1 Running Running 8 seconds
node
node 필터는 노드 이름 또는 노드 ID를 매칭해요.
$ docker service ps -f "node=manager1" redis
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
0qihejybwf1x redis.1 redis:7.4.1 manager1 Running Running 8 seconds
1x0v8yomsncd redis.5 redis:7.4.1 manager1 Running Running 8 seconds
3w1wu13yupln redis.9 redis:7.4.1 manager1 Running Running 8 seconds
8eaxrb2fqpbn redis.10 redis:7.4.1 manager1 Running Running 8 seconds
desired-state
desired-state 필터는 running, shutdown, 또는 accepted 값을 받을 수 있어요.
출력 형식 지정하기 (--format)
형식 옵션(--format)은 Go 템플릿을 사용해 태스크 출력을 예쁘게 출력해요. Go 템플릿의 유효한 플레이스홀더는 아래에 나열돼 있어요.
| 플레이스홀더 | 설명 |
|---|---|
.ID |
태스크 ID |
.Name |
태스크 이름 |
.Image |
태스크 이미지 |
.Node |
노드 ID |
.DesiredState |
태스크의 원하는 상태 (running, shutdown, 또는 accepted) |
.CurrentState |
태스크의 현재 상태 |
.Error |
오류 |
.Ports |
태스크 게시 포트 |
--format 옵션을 사용하면 service ps 명령은 템플릿이 선언한 대로 데이터를 출력하거나, table 지시어를 사용할 때 열 머리글도 포함해요. 다음 예제는 머리글 없이 템플릿을 사용해 모든 태스크의 Name과 Image를 콜론(:)으로 구분해 출력해요.
$ docker service ps --format "{{.Name}}: {{.Image}}" top
top.1: busybox
top.2: busybox
top.3: busybox