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-aregion 노드 라벨을 가진 모든 노드를 표시해요:

$ 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의 존재로 노드를 매칭해요.

다음 필터는 membershipaccepted인 노드를 매칭해요.

$ 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"}