docker node ls
docker node ls
docker node ls 명령은 swarm의 노드 목록을 보여줍니다.
출처: 문서
본문
Docker Swarm 매니저가 알고 있는 모든 노드를 나열하는 명령어예요. -f 또는 --filter 플래그로 필터링할 수 있어요. 사용 가능한 필터 옵션에 대한 자세한 내용은 필터링 섹션을 참고해요.
Swarm — 이 명령은 Swarm 오케스트레이터와 함께 동작해요.
참고
클러스터 관리 명령이며 swarm 매니저 노드에서 실행해야 해요. 매니저와 워커에 대해 알아보려면 문서의 Swarm 모드 섹션을 참고해요.
| 구분 | 내용 |
|---|---|
| Description | swarm의 노드 목록 보기 |
| Usage | docker node ls [OPTIONS] |
| Aliases | docker node list |
옵션 (Options)
| 옵션 | 기본값 | 설명 |
|---|---|---|
-f, --filter |
제공된 조건에 따라 출력 필터링 | |
--format |
사용자 정의 템플릿으로 출력 형식: 'table': 열 헤더가 있는 테이블 형식 출력 (기본값) 'table TEMPLATE': 주어진 Go 템플릿으로 테이블 형식 출력 'json': JSON 형식 출력 'TEMPLATE': 주어진 Go 템플릿으로 출력. 템플릿 출력 형식에 대한 자세한 내용은 https://docs.docker.com/go/formatting/ 참조 | |
-q, --quiet |
ID만 표시 |
예시 (Examples)
$ docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
1bcef6utixb0l0ca7gxuivsj0 swarm-worker2 Ready Active
38ciaotwjuritcdtn9npbnkuz swarm-worker1 Ready Active
e216jshn25ckzbvmwlnh5jr3g * swarm-manager1 Ready Active Leader
참고
위 예시 출력에는 그 노드가 현재 docker 데몬과 같은 노드인지 나타내는
.Self라는 숨은 열이 있어요.*(예:e216jshn25ckzbvmwlnh5jr3g *)는 이 노드가 현재 docker 데몬임을 의미해요.
필터링 (--filter)
필터링 플래그(-f 또는 --filter) 형식은 "key=value"예요. 필터가 둘 이상이면 여러 플래그를 전달해요 (예: --filter "foo=bar" --filter "bif=baz").
현재 지원되는 필터:
id
id 필터는 노드 id의 전체 또는 일부와 매칭해요.
$ docker node ls -f id=1
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
1bcef6utixb0l0ca7gxuivsj0 swarm-worker2 Ready Active
label
label 필터는 엔진 라벨과 label의 존재만 또는 label과 값으로 노드를 매칭해요. 엔진 라벨은 데몬 구성에서 설정해요. Swarm node 라벨로 필터링하려면 대신 node.label을 사용해요.
다음 필터는 값과 관계없이 foo 라벨이 있는 노드를 매칭해요.
$ docker node ls -f "label=foo"
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
1bcef6utixb0l0ca7gxuivsj0 swarm-worker2 Ready Active
node.label
node.label 필터는 노드 라벨과 node.label의 존재만 또는 node.label과 값으로 노드를 매칭해요.
다음 필터는 노드에 region 노드 라벨을 설정하도록 업데이트해요:
$ docker node update --label-add region=region-a swarm-test-01
$ docker node update --label-add region=region-a swarm-test-02
$ docker node update --label-add region=region-b swarm-test-03
$ docker node update --label-add region=region-b swarm-test-04
region 노드 라벨이 설정된 모든 노드를 표시해요:
$ docker node ls --filter node.label=region
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
yg550ettvsjn6g6t840iaiwgb * swarm-test-01 Ready Active Leader 23.0.3
2lm9w9kbepgvkzkkeyku40e65 swarm-test-02 Ready Active Reachable 23.0.3
hc0pu7ntc7s4uvj4pv7z7pz15 swarm-test-03 Ready Active Reachable 23.0.3
n41b2cijmhifxxvz56vwrs12q swarm-test-04 Ready Active 23.0.3
값이 region-a인 region 노드 라벨을 가진 모든 노드를 표시해요:
$ docker node ls --filter node.label=region=region-a
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION
yg550ettvsjn6g6t840iaiwgb * swarm-test-01 Ready Active Leader 23.0.3
2lm9w9kbepgvkzkkeyku40e65 swarm-test-02 Ready Active Reachable 23.0.3
membership
membership 필터는 membership과 값 accepted 또는 pending의 존재로 노드를 매칭해요.
다음 필터는 membership이 accepted인 노드를 매칭해요.
$ docker node ls -f "membership=accepted"
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
1bcef6utixb0l0ca7gxuivsj0 swarm-worker2 Ready Active
38ciaotwjuritcdtn9npbnkuz swarm-worker1 Ready Active
name
name 필터는 노드 호스트네임의 전체 또는 일부와 매칭해요.
다음 필터는 이름이 swarm-master 문자열과 같은 노드를 매칭해요.
$ docker node ls -f name=swarm-manager1
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
e216jshn25ckzbvmwlnh5jr3g * swarm-manager1 Ready Active Leader
role
role 필터는 role과 값 worker 또는 manager의 존재로 노드를 매칭해요.
다음 필터는 manager 역할의 노드를 매칭해요.
$ docker node ls -f "role=manager"
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
e216jshn25ckzbvmwlnh5jr3g * swarm-manager1 Ready Active Leader
출력 형식 (--format)
형식 옵션(--format)은 Go 템플릿을 사용해 노드 출력을 보기 좋게 인쇄해요.
Go 템플릿에 유효한 플레이스홀더는 다음과 같아요:
| 플레이스홀더 | 설명 |
|---|---|
.ID |
노드 ID |
.Self |
데몬의 노드 (true/false, true는 노드가 현재 docker 데몬과 같음을 의미) |
.Hostname |
노드 호스트네임 |
.Status |
노드 상태 |
.Availability |
노드 가용성 ("active", "pause", 또는 "drain") |
.ManagerStatus |
노드의 매니저 상태 |
.TLSStatus |
노드의 TLS 상태 ("Ready", 또는 옛 CA가 서명한 TLS 인증서를 가진 "Needs Rotation") |
.EngineVersion |
엔진 버전 |
--format 옵션을 사용하면 node ls 명령은 템플릿이 선언한 방식대로 정확히 데이터를 출력하거나, table 지시어를 사용할 때는 열 헤더도 포함해요.
다음 예는 헤더 없는 템플릿을 사용해 모든 노드의 ID, Hostname, TLS Status를 콜론(:)으로 구분해 출력해요:
$ docker node ls --format "{{.ID}}: {{.Hostname}} {{.TLSStatus}}"
e216jshn25ckzbvmwlnh5jr3g: swarm-manager1 Ready
35o6tiywb700jesrt3dmllaza: swarm-worker1 Needs Rotation
모든 노드를 JSON 형식으로 나열하려면 json 지시어를 사용해요:
$ docker node ls --format json
{"Availability":"Active","EngineVersion":"23.0.3","Hostname":"docker-desktop","ID":"k8f4w7qtzpj5sqzclcqafw35g","ManagerStatus":"Leader","Self":true,"Status":"Ready","TLSStatus":"Ready"}