docker node inspect 명령으로 노드 세부 정보 확인하는 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker node inspect 명령을 사용하여 Docker Swarm 노드에 대한 자세한 정보를 확인하는 방법을 배우게 됩니다. 먼저 노드 ID 를 사용하여 단일 노드를 검사하는 것으로 시작한 다음, 'self' 키워드를 사용하여 현재 노드를 검사하는 방법을 살펴보겠습니다. 마지막으로, 특정 정보를 표시하기 위해 출력을 형식화하고 가독성을 높이기 위해 노드 세부 정보를 보기 좋게 인쇄하는 방법을 배우게 됩니다. 이 실습을 통해 Docker Swarm 노드의 구성 및 상태를 효과적으로 검사하고 이해하는 기술을 습득할 수 있습니다.

단일 노드 검사

이 단계에서는 단일 Docker 노드를 검사하는 방법을 배우겠습니다. docker node inspect 명령은 Docker Swarm 의 특정 노드에 대한 자세한 정보를 제공합니다.

먼저, LabEx VM 에 설치된 Docker 버전을 확인해 보겠습니다.

docker version

다음과 유사한 출력이 표시되어 Docker 버전이 20.10.21 임을 나타냅니다.

Client: Docker Engine - Community
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.18.9
 Git commit:        baedd2f
 Built:             Tue Oct 25 17:58:10 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.21
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.9
  Git commit:       305620d
  Built:            Tue Oct 25 17:56:04 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.10
  GitCommit:        b35cd9b83c7c7b1200458f9f9f8d73288d61e58e
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

이제 Docker Swarm 을 초기화해 보겠습니다. 검사할 노드가 있으려면 이 작업이 필요합니다.

docker swarm init

Swarm 이 초기화되었음을 나타내고 조인 토큰을 제공하는 출력이 표시됩니다.

Swarm initialized: current node (xxxxxxxxxxxx) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 172.17.0.2:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

출력은 현재 노드가 이제 매니저임을 보여줍니다. xxxxxxxxxxxx는 현재 노드의 ID 입니다. 이 ID 를 사용하여 노드를 검사합니다.

이제 ID 를 사용하여 현재 노드를 검사해 보겠습니다. YOUR_NODE_IDdocker swarm init 출력의 실제 노드 ID 로 바꿉니다.

docker node inspect YOUR_NODE_ID

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

docker node inspect abcdef123456

이 명령은 노드의 상태, 역할, 호스트 이름 등을 포함한 노드에 대한 자세한 정보를 담은 큰 JSON 객체를 출력합니다.

'self'를 사용하여 현재 노드 검사

이전 단계에서는 특정 ID 를 사용하여 노드를 검사했습니다. Docker Swarm 은 현재 노드를 참조하기 위한 편리한 별칭인 self를 제공합니다. 이는 현재 작업 중인 노드의 ID 를 몰라도 해당 노드를 검사하려는 경우에 유용합니다.

self 별칭을 사용하여 현재 노드를 검사해 보겠습니다.

docker node inspect self

이 명령은 ID 로 노드를 검사하는 것과 동일한 자세한 JSON 출력을 생성합니다. self를 사용하면 명령을 더 이식 가능하고 사용하기 쉬워지며, 특히 스크립트에서 또는 노드 ID 를 쉽게 사용할 수 없는 경우에 유용합니다.

출력은 이전 단계에서 본 것과 유사한 큰 JSON 객체입니다. 이 JSON 에는 현재 노드에 대한 모든 구성 및 상태 정보가 포함되어 있습니다.

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

이전 단계에서 docker node inspect가 큰 JSON 객체를 출력하는 것을 보았습니다. 종종 이 출력에서 특정 정보 조각만 필요합니다. Docker 는 Go 의 text/template 패키지를 사용하여 특정 데이터를 추출하고 형식을 지정하는 --format 플래그를 제공합니다.

--format 플래그를 사용하여 현재 노드의 호스트 이름만 표시해 보겠습니다. 호스트 이름은 JSON 출력 내의 .Description.Hostname 경로에 있습니다.

docker node inspect --format '{{ .Description.Hostname }}' self

이 명령은 현재 노드의 호스트 이름만 출력합니다. {{ .Description.Hostname }} 부분은 JSON 출력의 Description 객체 내에서 Hostname 필드에 액세스하기 위한 Go 템플릿 구문입니다.

이제 노드 ID 와 노드 가용성을 표시해 보겠습니다. 노드 ID 는 .ID 경로에 있고, 가용성은 .Spec.Availability 경로에 있습니다. 형식 문자열에서 여러 필드를 결합할 수 있습니다.

docker node inspect --format 'ID: {{ .ID }}, Availability: {{ .Spec.Availability }}' self

이 명령은 노드 ID 와 가용성을 더 읽기 쉬운 형식으로 출력합니다. 이 기술을 사용하여 docker node inspect의 JSON 출력에서 모든 필드를 추출할 수 있습니다.

노드 정보 보기 좋게 출력 (Pretty-print)

이전 단계에서 원시 JSON 출력과 특정 필드를 추출하는 방법을 살펴보았습니다. 때로는 원시 JSON 을 직접 구문 분석하지 않고도 노드 정보를 더 사람이 읽기 쉬운 구조화된 형식으로 출력하고 싶을 수 있습니다. docker node inspect 명령은 이러한 목적으로 --pretty 플래그를 제공합니다.

--pretty 플래그를 사용하여 노드 정보를 더 읽기 쉬운 형식으로 표시해 보겠습니다.

docker node inspect --pretty self

이 명령은 노드의 ID, 호스트 이름, 상태, 가용성 및 역할을 포함하여 노드 정보의 형식이 지정된 요약을 출력합니다. 이 출력은 원시 JSON 에 비해 한눈에 읽고 이해하기가 훨씬 쉽습니다.

출력은 다음과 유사하게 표시됩니다.

ID:             abcdef123456
Hostname:       labex-vm
Status:         Ready
Availability:   Active
Manager Status:
  Address:      172.17.0.2:2377
  Reachability: Reachable
  Leader:       Yes
Platform:
  Architecture: x86_64
  OS:           linux
Resources:
  NanoCPUs:     2000000000
  MemoryBytes:  4177903616
Engine Version: 20.10.21

이 보기 좋게 출력된 정보는 Docker Swarm 에서 노드의 상태와 주요 세부 정보를 빠르게 확인하는 데 매우 유용합니다.

요약

이 실습에서는 docker node inspect 명령을 사용하여 Docker Swarm 노드에 대한 자세한 정보를 보는 방법을 배웠습니다. Docker Swarm 을 초기화한 후 ID 를 사용하여 단일 노드를 검사하는 것으로 시작했습니다.

그런 다음 'self' 별칭을 사용하여 현재 노드를 검사하는 방법을 살펴보았습니다. 마지막으로, 특정 정보를 표시하도록 출력을 형식화하는 방법과 가독성을 높이기 위해 노드 세부 정보를 보기 좋게 출력하는 방법을 배웠습니다.