docker stack ls 명령으로 스택 목록 확인 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker stack ls 명령을 사용하여 Docker 스택을 나열하는 방법을 배우게 됩니다. 먼저, 멀티 컨테이너 애플리케이션을 스택으로 정의하고 배포하는 데 필수적인 Docker Compose 를 설치하는 것으로 시작합니다. 그런 다음, docker-compose.yml 파일을 사용하여 간단한 웹 서비스 스택을 배포하여 나열할 스택을 갖게 됩니다.

배포 후에는 docker stack ls를 사용하여 스택을 나열하는 다양한 방법을 살펴보겠습니다. 여기에는 실행 중인 모든 스택 나열, 특정 정보를 표시하기 위한 사용자 지정 출력 형식으로 스택 나열, 프로그래밍 방식으로 처리하기 위한 JSON 형식으로 스택 나열 등이 포함됩니다.

모든 스택 나열

이 단계에서는 시스템에서 실행 중인 모든 Docker 스택을 나열하는 방법을 배우게 됩니다. Docker 스택은 함께 배포되는 서비스의 모음입니다. 스택을 나열하기 전에, 멀티 컨테이너 Docker 애플리케이션을 정의하고 실행하는 데 사용되는 Docker Compose 를 설치해야 합니다.

먼저, Docker Compose 를 설치해 보겠습니다. Docker Compose 바이너리를 다운로드하고 실행 가능하게 만들 것입니다.

sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

첫 번째 명령은 공식 GitHub 저장소에서 Docker Compose 바이너리를 다운로드합니다. $(uname -s)$(uname -m)은 머신의 운영 체제와 아키텍처를 가져와 올바른 바이너리를 다운로드하도록 합니다. 두 번째 명령은 다운로드한 파일을 실행 가능하게 만듭니다.

이제 Docker Compose 가 설치되었으므로 버전을 확인하여 설치를 확인해 보겠습니다.

docker-compose --version

출력에서 설치된 Docker Compose 버전을 확인할 수 있습니다.

스택 나열을 시연하기 위해 간단한 스택을 배포해야 합니다. 간단한 웹 서비스를 정의하는 docker-compose.yml 파일을 만들 것입니다.

nano ~/project/docker-compose.yml

다음 내용을 docker-compose.yml 파일에 붙여넣습니다.

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"

docker-compose.yml 파일은 nginx:latest 이미지를 사용하고 호스트의 포트 80 을 컨테이너의 포트 80 에 매핑하는 web이라는 단일 서비스를 정의합니다.

이제 docker stack deploy 명령을 사용하여 이 스택을 배포해 보겠습니다. 스택 이름을 mywebstack으로 지정합니다.

docker stack deploy -c ~/project/docker-compose.yml mywebstack

-c 플래그는 사용할 Compose 파일을 지정하고, mywebstack은 스택에 부여하는 이름입니다. 서비스가 생성되고 배포되고 있음을 나타내는 출력을 볼 수 있습니다.

스택을 배포한 후 docker stack ls 명령을 사용하여 실행 중인 모든 스택을 나열할 수 있습니다.

docker stack ls

이 명령은 스택 이름, 서비스 수, 각 서비스에 대한 원하는 복제본 수와 현재 복제본 수를 포함하여 배포된 모든 스택 목록을 표시합니다. 출력에서 mywebstack이 나열된 것을 볼 수 있습니다.

사용자 지정 형식으로 스택 목록 확인

이전 단계에서는 기본 출력 형식을 사용하여 배포된 모든 Docker 스택을 나열하는 방법을 배웠습니다. 이 단계에서는 docker stack ls 명령의 출력 형식을 사용자 지정하여 필요한 정보만 표시하는 방법을 배우게 됩니다.

docker stack ls 명령은 --format 플래그를 지원하며, 이를 통해 출력을 형식화하기 위한 Go 템플릿을 지정할 수 있습니다. 이는 특정 정보를 추출하거나 출력을 다른 도구와 통합하려는 경우에 유용합니다.

각 스택의 스택 이름과 서비스 수를 나열하는 것으로 시작해 보겠습니다. 이를 위해 {{.Name}}{{.Services}} 템플릿 필드를 사용할 수 있습니다.

docker stack ls --format "{{.Name}}: {{.Services}}"

이 명령에서 --format "{{.Name}}: {{.Services}}"는 각 스택의 이름을 콜론과 함께 출력한 다음 서비스 수를 출력하도록 Docker 에 지시합니다. {{.Name}}{{.Services}}는 각 스택의 실제 값으로 대체될 자리 표시자입니다.

mywebstack: 1과 유사한 출력을 볼 수 있으며, 이는 스택의 이름과 포함된 서비스 수를 나타냅니다.

형식 문자열에 다른 필드를 포함할 수도 있습니다. 예를 들어, 스택 이름과 원하는 복제본 수를 나열해 보겠습니다.

docker stack ls --format "Stack Name: {{.Name}}, Desired Replicas: {{.Desired}}"

여기서는 {{.Desired}} 필드를 사용하여 스택의 서비스에 대한 원하는 복제본 수를 표시합니다.

--format 플래그는 매우 유연하며 다양한 필드를 결합하고 사용자 지정 텍스트를 추가할 수 있습니다. docker stack ls 명령에 대한 Docker 설명서에서 사용 가능한 필드 목록을 찾을 수 있습니다.

스택 이름과 현재 복제본 수를 나열하는 예제를 하나 더 시도해 보겠습니다.

docker stack ls --format "Stack: {{.Name}}, Current Replicas: {{.Current}}"

이 명령은 {{.Current}} 필드를 사용하여 스택의 서비스에 대한 현재 실행 중인 복제본 수를 표시합니다.

--format 플래그를 사용하면 docker stack ls의 출력을 특정 요구 사항에 맞게 조정하여 배포된 스택에 대한 정보를 더 쉽게 처리하고 분석할 수 있습니다.

JSON 형식으로 스택 목록 확인

이전 단계에서는 기본 및 사용자 지정 형식을 사용하여 Docker 스택을 나열하는 방법을 배웠습니다. 이 단계에서는 JSON 형식으로 Docker 스택을 나열하는 방법을 배우게 됩니다. 이는 출력을 프로그래밍 방식으로 구문 분석하거나 다른 시스템과 통합해야 할 때 특히 유용합니다.

다른 많은 Docker 명령과 마찬가지로 docker stack ls 명령은 결과를 JSON 배열로 출력하기 위해 --format json 옵션을 지원합니다.

배포된 스택을 JSON 형식으로 나열해 보겠습니다.

docker stack ls --format json

이 명령은 JSON 배열을 출력하며, 배열의 각 요소는 Docker 스택을 나타내고 스택 이름, 서비스, 원하는 복제본 수 및 현재 복제본 수와 같은 스택에 대한 정보를 포함합니다.

출력은 다음과 유사하게 표시됩니다 (정확한 내용은 배포한 스택에 따라 다름).

[
  {
    "Name": "mywebstack",
    "Services": "1",
    "Desired": "1",
    "Current": "1"
  }
]

이 JSON 출력은 구조화되어 있으며 스크립팅 언어 또는 기타 도구를 사용하여 쉽게 구문 분석할 수 있습니다. 예를 들어, jq와 같은 도구를 사용하여 JSON 출력에서 특정 필드를 추출할 수 있습니다.

가볍고 유연한 명령줄 JSON 프로세서인 jq를 설치해 보겠습니다.

sudo apt-get update
sudo apt-get install -y jq

이제 jq가 설치되었으므로 이를 사용하여 JSON 출력에서 배포된 스택의 이름만 추출해 보겠습니다.

docker stack ls --format json | jq '.[].Name'

이 명령에서 docker stack ls --format json의 JSON 출력을 jq로 파이프합니다. '.[].Name'은 JSON 배열의 각 객체에서 Name 필드를 선택하는 jq 필터입니다.

배포된 스택의 이름인 mywebstack이 출력으로 표시됩니다.

JSON 형식으로 스택을 나열하면 자동화 및 통합 목적으로 필수적인 스택 정보에 액세스할 수 있는 구조화된 방법을 제공합니다.

요약

이 Lab 에서는 docker stack ls 명령을 사용하여 Docker 스택을 나열하는 방법을 배웠습니다. Lab 은 Docker 스택 작업을 위한 필수 조건인 Docker Compose 의 설치를 안내하고 설치를 확인하는 것으로 시작되었습니다. 그런 다음 기본 웹 서비스를 정의하는 간단한 docker-compose.yml 파일을 생성하고 docker stack deploy를 사용하여 mywebstack이라는 스택으로 배포했습니다.

제공된 내용에 자세히 설명되어 있지는 않지만, 후속 단계에서는 docker stack ls를 사용하여 배포된 모든 스택을 나열하고, 특정 정보를 표시하도록 출력 형식을 사용자 지정하고, 프로그래밍 방식으로 처리를 위해 JSON 형식으로 스택을 나열하는 내용을 다루었을 것입니다. 이 실습 경험은 docker stack ls 명령과 다양한 옵션을 사용하여 Docker 스택을 관리하고 검사하는 실질적인 지식을 제공했습니다.