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 태스크를 모두 반환해요. 현재 지원되는 필터는 다음과 같아요.

  • id
  • name
  • node
  • desired-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

더 알아보기 (Learn more)