docker node ls 명령으로 Swarm 노드 목록 확인 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker node ls 명령어를 효과적으로 사용하여 Docker Swarm 내의 노드를 관리하고 검사하는 방법을 배우게 됩니다. 먼저 Docker Swarm 을 초기화하고 모든 노드를 나열하는 것으로 시작합니다.

그 후, 노드 ID, 역할 (매니저 또는 워커), 사용자 지정 노드 레이블과 같은 기준에 따라 노드 목록을 좁히기 위한 다양한 필터링 옵션을 탐색합니다. 마지막으로, 필요한 특정 정보만 표시하도록 출력을 형식화하여 관련 노드 세부 정보를 신속하게 검색하는 능력을 향상시키는 방법을 배우게 됩니다.

Swarm 의 모든 노드 나열

이 단계에서는 Docker Swarm 의 모든 노드를 나열하는 방법을 배우겠습니다. 노드를 나열하기 전에 Docker Swarm 을 초기화해야 합니다.

먼저, 현재 머신에서 swarm 을 초기화해 보겠습니다. 이 머신은 매니저 노드가 됩니다.

docker swarm init

Swarm 이 초기화되었음을 나타내는 출력과 다른 노드를 swarm 에 가입시키는 명령을 볼 수 있습니다.

이제 swarm 이 초기화되었으므로 docker node ls 명령을 사용하여 swarm 의 노드를 나열할 수 있습니다.

docker node ls

이 명령은 ID, 호스트 이름, 상태, 가용성, 매니저 상태 및 엔진 버전을 포함하여 swarm 의 노드에 대한 정보가 있는 테이블을 표시합니다. 노드가 하나뿐이므로 (방금 초기화한 매니저 노드), 목록에 단일 항목이 표시됩니다.

출력은 다음과 유사합니다.

ID                            HOSTNAME            STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
<node_id> *                   <hostname>          Ready     Active         Leader           20.10.21

ID 옆의 *는 이 명령을 실행 중인 현재 노드임을 나타냅니다. MANAGER STATUS 열은 이 노드가 swarm 의 Leader임을 보여줍니다.

ID 로 노드 필터링

이 단계에서는 Docker Swarm 에서 ID 를 기반으로 노드 목록을 필터링하는 방법을 배우겠습니다. 이는 많은 노드가 있고 특정 노드에 대한 정보를 보려는 경우 유용합니다.

먼저, 매니저 노드의 ID 를 얻기 위해 모든 노드를 다시 나열해 보겠습니다.

docker node ls

출력에서 노드의 ID를 식별합니다. 이는 긴 문자열입니다.

이제 --filter 플래그를 id 키와 함께 사용하여 출력을 필터링하고 지정된 ID 를 가진 노드만 표시할 수 있습니다. <node_id>를 이전 명령에서 얻은 실제 ID 로 바꿉니다.

docker node ls --filter id=<node_id>

이 명령은 지정된 ID 를 가진 노드에 해당하는 행만 표시합니다. ID 를 알고 있을 때 특정 노드에 대한 정보를 빠르게 찾을 수 있는 간단한 방법입니다.

예를 들어, 노드 ID 가 24ifihg345h345h345h345h34인 경우 명령은 다음과 같습니다.

docker node ls --filter id=24ifihg345h345h345h345h34

출력은 이전 단계의 docker node ls 명령에서 매니저 노드에 대한 단일 행과 동일합니다.

역할별 노드 필터링

이 단계에서는 Docker Swarm 에서 역할별로 노드 목록을 필터링하는 방법을 배우겠습니다. Docker Swarm 에서 노드는 manager 또는 worker의 두 가지 역할 중 하나를 가질 수 있습니다. 매니저 노드는 swarm 을 관리하고, 워커 노드는 서비스를 실행합니다.

현재 swarm 에 노드가 하나뿐이고 매니저 노드이므로, 매니저 노드만 표시하도록 필터링해 보겠습니다. --filter 플래그를 role 키와 값 manager와 함께 사용합니다.

docker node ls --filter role=manager

이 명령은 manager 역할을 가진 노드만 표시합니다. 현재 설정에서는 이전과 동일한 단일 노드가 표시됩니다.

swarm 에 워커 노드가 있는 경우, 다음을 사용하여 워커 노드만 표시하도록 필터링할 수 있습니다.

docker node ls --filter role=worker

현재 이 명령은 swarm 에 워커 노드가 없으므로 아무런 출력도 표시하지 않습니다.

역할별로 필터링하는 방법을 이해하는 것은 여러 매니저 및 워커 노드가 있는 더 큰 swarm 을 관리하는 데 중요합니다.

노드 레이블로 필터링

이 단계에서는 노드에 할당된 레이블을 기반으로 노드를 필터링하는 방법을 배우겠습니다. 노드 레이블은 조직적인 목적으로 또는 서비스 배치를 제어하기 위해 노드에 연결할 수 있는 키 - 값 쌍입니다.

먼저, 매니저 노드에 레이블을 추가해 보겠습니다. location=datacenter1 레이블을 추가합니다. 이를 위해 docker node update 명령을 사용하고 노드 ID 와 --label-add 플래그를 사용합니다.

docker node ls -q를 사용하여 노드 ID 를 다시 가져옵니다.

NODE_ID=$(docker node ls -q)
echo $NODE_ID

이제 레이블로 노드를 업데이트합니다.

docker node update --label-add location=datacenter1 $NODE_ID

노드 업데이트를 확인하는 출력을 볼 수 있습니다.

레이블이 추가되었는지 확인하려면 노드를 검사할 수 있습니다.

docker node inspect $NODE_ID

출력에서 Labels 섹션을 찾습니다. "location": "datacenter1"을 (를) 볼 수 있습니다.

이제 이 레이블을 기반으로 노드를 필터링해 보겠습니다. --filter 플래그를 label 키와 key=value 형식의 레이블과 함께 사용합니다.

docker node ls --filter label=location=datacenter1

이 명령은 location 레이블이 값 datacenter1을 (를) 가진 노드만 표시합니다. 이 경우 매니저 노드가 표시됩니다.

또한 키만 제공하여 값에 관계없이 특정 레이블 키를 가진 노드를 필터링할 수도 있습니다.

docker node ls --filter label=location

이렇게 하면 location 레이블이 정의된 모든 노드가 표시됩니다.

특정 정보 표시를 위한 출력 형식 지정

이 단계에서는 docker node ls 명령의 출력을 우리가 관심 있는 정보만 표시하도록 형식 지정하는 방법을 배우겠습니다. 이는 스크립팅에 유용하거나 특정 세부 정보에 대한 빠른 보기가 필요할 때 유용합니다.

--format 플래그를 사용하여 출력 형식을 지정합니다. 원하는 출력을 정의하기 위해 Go 템플릿 구문을 사용할 수 있습니다. 액세스할 수 있는 일반적인 필드에는 .ID, .Hostname, .Status, .Availability, .ManagerStatus, .EngineVersion이 있습니다.

노드 ID 와 호스트 이름만 표시해 보겠습니다.

docker node ls --format "{{.ID}}\t{{.Hostname}}"

{{.ID}}{{.Hostname}}은 각각 노드의 ID 와 호스트 이름에 대한 자리 표시자입니다. \t는 구분을 위해 탭 문자를 삽입합니다.

출력은 다음과 같습니다.

<node_id> <hostname>

이제 호스트 이름과 매니저 상태를 표시해 보겠습니다.

docker node ls --format "Hostname: {{.Hostname}}, Manager Status: {{.ManagerStatus}}"

이렇게 하면 다음과 같이 출력됩니다.

Hostname: <hostname>, Manager Status: Leader

필터링과 형식을 결합할 수 있습니다. 예를 들어, 매니저 노드를 필터링하고 ID 와 호스트 이름을 표시해 보겠습니다.

docker node ls --filter role=manager --format "{{.ID}}\t{{.Hostname}}"

이 명령은 먼저 노드를 필터링하여 매니저만 포함한 다음 ID 와 호스트 이름을 표시하도록 출력을 형식 지정합니다.

--format 플래그를 사용하면 Docker Swarm 노드에 대한 정보를 보고 처리하는 방식에 유연성을 제공합니다.

요약

이 랩에서는 docker node ls 명령을 사용하여 Docker Swarm 의 노드를 관리하고 노드에 대한 정보를 보는 방법을 배웠습니다. 현재 머신에서 Docker Swarm 을 초기화하여 매니저 노드로 만드는 것으로 시작했습니다. 그런 다음 docker node ls를 사용하여 스웜의 모든 노드를 나열하고 ID, 호스트 이름, 상태, 가용성, 매니저 상태 및 엔진 버전을 포함하는 기본 출력을 관찰했습니다.

그런 다음 --filter 플래그를 사용하여 노드 목록을 필터링하는 방법을 살펴보았습니다. 특히 고유 ID 를 기반으로 노드를 필터링하는 방법을 배워, 더 큰 스웜 내에서 특정 노드에 대한 정보를 빠르게 찾고 볼 수 있었습니다. 이 랩에서는 역할 및 노드 레이블별 필터링과 특정 정보만 표시하도록 출력 형식 지정도 다루지만, 제공된 내용은 ID 별 필터링만 자세히 설명합니다.