docker service inspect 명령어를 사용하여 서비스 세부 정보 확인 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker service inspect 명령을 사용하여 Docker 서비스에 대한 자세한 정보를 확인하는 방법을 배우게 됩니다. 서비스 이름과 고유 ID 를 사용하여 서비스를 검사하는 다양한 방법을 살펴볼 것입니다.

또한, 서비스 정보의 세부 수준과 표시 방식을 제어하기 위해 --pretty--format 옵션을 사용하여 docker service inspect 명령의 출력을 형식화하는 방법을 배우게 됩니다.

이름으로 서비스 검사

이 단계에서는 Docker 서비스의 이름을 사용하여 검사하는 방법을 배우게 됩니다. docker service inspect 명령은 구성, 작업 및 네트워크 설정을 포함하여 서비스에 대한 자세한 정보를 제공합니다.

먼저, 검사할 간단한 서비스를 생성해 보겠습니다. nginx 이미지를 사용하여 my-web-service라는 서비스를 생성합니다. Docker Compose 가 미리 설치되어 있지 않으므로, docker service create 명령을 직접 사용합니다.

docker service create --name my-web-service nginx

서비스가 생성되었음을 나타내는 출력을 볼 수 있습니다. Docker 는 시스템에 nginx 이미지가 아직 없는 경우 해당 이미지를 가져옵니다.

이제 서비스가 생성되었으므로, 서비스 이름 뒤에 docker service inspect 명령을 사용하여 이름을 통해 검사할 수 있습니다.

docker service inspect my-web-service

이 명령은 my-web-service에 대한 모든 세부 정보를 포함하는 큰 JSON 객체를 출력합니다. 이 출력은 서비스의 구성 및 상태에 대한 심층적인 정보를 제공하며, 상당히 방대할 수 있습니다.

ID 로 서비스 검사

이전 단계에서는 서비스 이름을 사용하여 검사하는 방법을 배웠습니다. Docker 는 또한 각 서비스에 고유한 ID 를 할당합니다. 이 ID 를 사용하여 서비스도 검사할 수 있습니다. 이는 유사한 이름을 가진 여러 서비스가 있거나 스크립팅을 할 때 특히 유용합니다.

먼저, 이전 단계에서 생성한 my-web-service의 ID 를 얻어보겠습니다. docker service ls 명령을 사용하여 실행 중인 모든 서비스와 해당 ID 를 나열할 수 있습니다.

docker service ls

출력에는 ID, NAME, MODE, REPLICAS, IMAGE와 같은 열이 있는 테이블이 표시됩니다. ID 열에는 각 서비스의 고유 식별자가 포함되어 있습니다. my-web-service의 ID 를 복사합니다. 이는 문자열로 표시됩니다.

이제 docker service inspect 명령을 사용하고 복사한 서비스 ID 를 입력합니다. <SERVICE_ID>를 실제 ID 로 바꿉니다.

docker service inspect <SERVICE_ID>

이름으로 검사했을 때와 동일한 자세한 JSON 출력을 볼 수 있습니다. 이는 서비스 이름 또는 ID 를 사용하여 검사 세부 정보를 얻을 수 있음을 보여줍니다. ID 를 사용하는 것이 특히 자동화된 스크립트에서 더 정확한 경우가 많습니다.

--pretty 옵션으로 출력 형식 지정

이전 단계에서 docker service inspect의 기본 출력은 큰 JSON 객체임을 확인했습니다. 포괄적이긴 하지만, 이 형식은 빠르게 개요를 파악하기에는 읽기 어려울 수 있습니다. Docker 는 정보를 더 사람이 읽기 쉬운 형식으로 출력하기 위해 --pretty 플래그를 제공합니다.

--pretty 플래그를 사용하여 이번에는 my-web-service를 다시 검사해 보겠습니다.

docker service inspect --pretty my-web-service

이제 출력이 스캔하고 이해하기 쉬운 방식으로 형식화되었음을 알 수 있습니다. 서비스 ID, 이름, 모드, 복제본 및 이미지와 같은 주요 정보를 원시 JSON 덤프가 아닌 구조화된 레이아웃으로 표시합니다. 이는 서비스의 상태 및 기본 구성을 빠르게 확인하는 데 매우 유용합니다.

--pretty 플래그는 전체 JSON 출력을 구문 분석하지 않고도 서비스 세부 정보의 요약을 얻을 수 있는 편리한 방법입니다.

--format 옵션으로 출력 형식 지정

--pretty는 사람이 읽기 쉬운 요약을 제공하는 반면, --format 플래그는 Go 템플릿 구문을 사용하여 출력 형식을 세밀하게 제어할 수 있도록 합니다. 이는 특정 정보 조각을 추출하거나 스크립팅 또는 보고를 위해 출력을 형식화하는 데 매우 강력합니다.

Go 템플릿 구문을 사용하면 inspect 명령의 JSON 출력 내 필드에 액세스할 수 있습니다. 예를 들어, 서비스 ID 와 이름만 얻으려면 {{.ID}} {{.Spec.Name}}과 같은 형식 문자열을 사용할 수 있습니다.

my-web-service를 검사하고 서비스 ID 와 이름만 표시하도록 출력을 형식화해 보겠습니다.

docker service inspect --format '{{.ID}} {{.Spec.Name}}' my-web-service

다음과 유사한 출력을 볼 수 있습니다.

<SERVICE_ID> my-web-service

여기서 <SERVICE_ID>는 서비스의 실제 ID 입니다.

점을 사용하여 중첩된 필드에 액세스할 수 있습니다. 예를 들어, 이미지 이름을 얻으려면 {{.Spec.TaskTemplate.ContainerSpec.Image}}를 사용합니다.

서비스 이름과 사용 중인 이미지를 얻기 위해 다른 예를 시도해 보겠습니다.

docker service inspect --format 'Service Name: {{.Spec.Name}}, Image: {{.Spec.TaskTemplate.ContainerSpec.Image}}' my-web-service

출력은 다음과 같습니다.

Service Name: my-web-service, Image: nginx

--format 플래그는 매우 유연하며 특정 요구 사항에 맞게 출력을 조정할 수 있습니다. 전체 JSON 출력 ( --pretty 또는 --format 없이) 을 탐색하여 구조를 이해하고 추출하려는 필드를 식별할 수 있습니다.

요약

이 랩에서는 docker service inspect 명령을 사용하여 Docker 서비스에 대한 자세한 정보를 보는 방법을 배웠습니다. docker service create를 사용하여 my-web-service라는 간단한 nginx 서비스를 생성한 다음, docker service inspect my-web-service를 사용하여 JSON 형식으로 구성 및 상태를 검색함으로써 이름을 사용하여 서비스를 검사하는 연습을 했습니다.

또한 고유 ID 를 사용하여 서비스를 검사하는 방법을 배웠습니다. docker service ls를 사용하여 서비스 ID 를 찾고, docker service inspect <SERVICE_ID>를 사용하여 동일한 자세한 정보를 얻을 수 있었습니다. 이는 스크립팅이나 이름이 모호할 때 특히 유용한 서비스 검사의 대체 방법을 보여줍니다.