docker container ls 명령으로 컨테이너 목록을 확인하고 필터링하는 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 Docker 컨테이너를 나열하고 관리하기 위해 docker container ls 명령 (또는 docker ps 명령) 을 효과적으로 사용하는 방법을 배우게 됩니다. 먼저 현재 실행 중인 모든 컨테이너를 나열하는 것으로 시작하여 중지된 컨테이너를 포함하도록 확장할 것입니다.

또한 상태 및 이름과 같은 다양한 기준에 따라 컨테이너 목록을 필터링하는 방법을 살펴보고, 필요한 특정 정보만 표시하도록 출력을 형식화하는 방법을 배우게 됩니다. 마지막으로 컨테이너의 디스크 사용량을 빠르게 확인하는 방법을 알아보겠습니다.

실행 중인 모든 컨테이너 나열

이 단계에서는 현재 실행 중인 모든 Docker 컨테이너를 나열하는 방법을 배우게 됩니다. 이는 컨테이너를 관리하고 시스템에서 활성화된 항목을 이해하는 데 필수적인 명령입니다.

먼저 컨테이너를 실행하는 데 사용할 수 있는 간단한 이미지를 가져와 보겠습니다. Docker 설치를 테스트하도록 설계된 매우 작은 이미지인 hello-world 이미지를 사용합니다.

docker pull hello-world

이미지가 가져와지고 추출되고 있음을 나타내는 출력을 볼 수 있습니다.

이제 이 이미지를 사용하여 컨테이너를 실행해 보겠습니다. docker run 명령은 새 컨테이너를 생성하고 시작합니다.

docker run hello-world

이 명령은 hello-world 컨테이너를 실행합니다. 컨테이너는 메시지를 출력한 다음 종료됩니다. 종료되더라도 시스템에 존재하는 컨테이너로 간주되지만 실행 중인 것은 아닙니다.

현재 실행 중인 컨테이너만 보려면 docker ps 명령을 사용합니다.

docker ps

hello-world 컨테이너는 실행 직후 종료되었으므로 docker ps 명령은 "CONTAINER ID", "IMAGE", "COMMAND" 등 열 아래에 출력을 표시하지 않을 가능성이 높습니다. 현재 실행 중인 컨테이너가 없기 때문입니다.

계속 실행되는 컨테이너를 실행해 보겠습니다. ubuntu 이미지를 사용하고 컨테이너를 활성 상태로 유지하는 간단한 명령을 실행합니다. 먼저 ubuntu 이미지를 가져옵니다.

docker pull ubuntu

이제 sleep infinity 명령을 실행하여 계속 실행되는 Ubuntu 컨테이너를 실행합니다. -d 플래그는 컨테이너를 분리 모드 (백그라운드) 에서 실행합니다.

docker run -d ubuntu sleep infinity

컨테이너 ID 인 긴 문자열을 볼 수 있습니다. 이는 컨테이너가 백그라운드에서 시작되었음을 나타냅니다.

이제 docker ps를 다시 실행하여 실행 중인 컨테이너를 확인합니다.

docker ps

이번에는 방금 시작한 Ubuntu 컨테이너를 나열하는 출력을 볼 수 있습니다. 출력에는 컨테이너 ID, 사용된 이미지, 실행 중인 명령, 생성 시기, 상태, 포트 및 임의로 생성된 이름과 같은 정보가 포함됩니다.

docker ps 명령은 시스템에서 활성 상태로 리소스를 소비하는 컨테이너를 빠르게 확인하는 데 필수적입니다.

중지된 컨테이너를 포함한 모든 컨테이너 표시

이전 단계에서는 docker ps를 사용하여 실행 중인 컨테이너만 나열하는 방법을 배웠습니다. 그러나 때로는 중지된 컨테이너를 포함하여 시스템에 존재하는 모든 컨테이너를 확인해야 할 수 있습니다. 이는 이전 컨테이너를 정리하거나 오류와 함께 종료된 컨테이너를 검사하는 데 유용합니다.

실행 중인 컨테이너와 중지된 컨테이너를 모두 나열하려면 -a 플래그와 함께 docker ps 명령을 사용합니다. -a는 "all"을 의미합니다.

이제 이 명령을 시도해 보겠습니다.

docker ps -a

이전 단계에서 실행 중인 Ubuntu 컨테이너와 실행 후 종료된 hello-world 컨테이너를 포함하는 목록을 볼 수 있습니다. "STATUS" 열은 컨테이너가 "Up"(실행 중) 인지 또는 "Exited"(종료됨) 인지를 표시합니다.

출력은 docker ps와 동일한 정보 (컨테이너 ID, 이미지, 명령, 생성 시간, 상태, 포트 및 이름) 를 제공하지만 현재 상태에 관계없이 모든 컨테이너에 대해 제공합니다.

이 명령은 시스템의 모든 컨테이너에 대한 전체 개요를 얻는 데 매우 유용합니다. 현재 활성 상태가 아니더라도 생성된 컨테이너를 확인할 수 있습니다.

상태 및 이름으로 컨테이너 필터링

이 단계에서는 상태 또는 이름을 기반으로 컨테이너 목록을 필터링하는 방법을 배우게 됩니다. 이는 컨테이너가 많고 특정 하위 집합만 보려는 경우 매우 유용합니다.

docker ps 명령은 컨테이너 나열에 대한 기준을 지정할 수 있는 --filter 플래그를 지원합니다.

필터를 사용하여 실행 중인 컨테이너만 나열하는 것으로 시작해 보겠습니다. 실행 중인 컨테이너의 상태는 running입니다.

docker ps --filter "status=running"

이 명령은 현재 실행 중인 Ubuntu 컨테이너만 나열하는 1 단계의 docker ps와 동일한 출력을 표시해야 합니다.

이제 종료된 컨테이너를 필터링해 보겠습니다. 종료된 컨테이너의 상태는 exited입니다. 모든 컨테이너를 보려면 -a 플래그를 포함하는 것을 잊지 마세요. 그렇지 않으면 기본적으로 나열되지 않은 경우 필터가 종료된 컨테이너를 찾을 수 없습니다.

docker ps -a --filter "status=exited"

이 명령은 상태가 "Exited"이므로 1 단계에서 실행한 hello-world 컨테이너를 표시해야 합니다.

컨테이너 이름으로도 필터링할 수 있습니다. --name 플래그를 사용하여 이름을 지정하지 않고 컨테이너를 실행하면 Docker 가 임의의 이름을 할당합니다. docker ps를 실행하여 실행 중인 Ubuntu 컨테이너의 이름을 찾을 수 있습니다. "NAMES" 열을 살펴보세요.

Ubuntu 컨테이너의 이름이 agitated_hoover와 같다고 가정해 보겠습니다. 이 이름으로 필터링할 수 있습니다.

docker ps -a --filter "name=agitated_hoover"

agitated_hoover를 Ubuntu 컨테이너의 실제 이름으로 바꿉니다. 이 명령은 상태에 관계없이 해당 특정 이름을 가진 컨테이너를 나열합니다 (이 경우 실행 중이어야 함).

필터를 결합할 수도 있습니다. 예를 들어 특정 이름으로 실행 중인 컨테이너를 찾으려면 다음을 수행합니다.

docker ps --filter "status=running" --filter "name=agitated_hoover"

다시, agitated_hoover를 컨테이너의 이름으로 바꿉니다.

필터링은 특히 컨테이너가 많은 환경에서 컨테이너를 관리하고 검사하는 강력한 방법입니다.

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

이 단계에서는 필요한 정보만 표시하도록 docker ps 명령의 출력을 사용자 정의하는 방법을 배우게 됩니다. 이는 스크립팅하거나 컨테이너에 대한 간결한 보기를 원할 때 특히 유용합니다.

docker ps 명령은 Go 템플릿 구문을 사용하여 출력 형식을 지정할 수 있는 --format 플래그를 지원합니다.

모든 컨테이너의 컨테이너 ID 만 나열하는 것으로 시작해 보겠습니다.

docker ps -a --format "{{.ID}}"

이 명령은 모든 컨테이너 (실행 중 및 중지됨) 에 대해 한 줄에 하나씩 컨테이너 ID 목록을 출력합니다. {{.ID}}는 컨테이너 ID 를 나타내는 Go 템플릿 자리 표시자입니다.

이제 탭으로 구분된 컨테이너 ID 와 이미지 이름을 나열해 보겠습니다.

docker ps -a --format "{{.ID}}\t{{.Image}}"

각 컨테이너에 대해 [container ID] [image name]과 같은 출력을 볼 수 있습니다. \t는 Go 템플릿에서 탭 문자를 나타냅니다.

다른 필드도 포함할 수 있습니다. 다음은 사용할 수 있는 몇 가지 일반적인 필드입니다.

  • .ID: 컨테이너 ID
  • .Image: 이미지 이름
  • .Command: 실행 중인 명령
  • .CreatedAt: 생성 시간
  • .Status: 컨테이너 상태
  • .Ports: 노출된 포트
  • .Names: 컨테이너 이름

컨테이너 이름과 상태를 나열해 보겠습니다.

docker ps -a --format "{{.Names}}: {{.Status}}"

이렇게 하면 각 컨테이너에 대해 [container name]: [status]와 같은 출력이 생성됩니다.

table 형식을 사용하여 기본 출력과 유사하지만 지정한 열만 있는 헤더가 있는 더 읽기 쉬운 출력을 얻을 수도 있습니다.

docker ps -a --format "table {{.ID}}\t{{.Image}}\t{{.Names}}\t{{.Status}}"

이 명령은 모든 컨테이너에 대한 ID, 이미지, 이름 및 상태 열이 있는 테이블을 표시합니다.

출력 형식을 지정하면 docker ps에서 표시되는 정보에 대한 세분화된 제어가 가능하므로 스크립트에서 구문 분석하고 사용하거나 특정 보고 요구 사항에 쉽게 사용할 수 있습니다.

컨테이너 디스크 사용량 표시

이 마지막 단계에서는 Docker 컨테이너, 이미지 및 볼륨에서 사용되는 디스크 공간을 확인하는 방법을 배우게 됩니다. 이는 시스템 리소스를 모니터링하고 Docker 에서 디스크 공간을 소비하는 위치를 식별하는 데 중요합니다.

docker system df 명령은 Docker 객체에서 사용되는 디스크 공간의 요약을 제공합니다. df는 표준 Linux 명령과 유사하게 "disk free"를 의미합니다.

디스크 사용량을 확인하기 위해 명령을 실행해 보겠습니다.

docker system df

출력에는 다음을 포함한 요약이 표시됩니다.

  • Images: 시스템의 모든 Docker 이미지의 총 크기입니다.
  • Containers: 모든 컨테이너에 대한 쓰기 가능한 계층의 총 크기입니다. 이는 컨테이너의 파일 시스템 내에서 변경 사항에 의해 사용되는 공간입니다.
  • Local Volumes: 모든 로컬 볼륨의 총 크기입니다. 볼륨은 영구 데이터 저장에 사용됩니다.
  • Build Cache: 이미지 빌드 중에 사용되는 빌드 캐시의 크기입니다.

"Total", "Active", "Size" 및 "Reclaimable"과 같은 열이 표시됩니다.

  • Total: 객체의 총 수 또는 크기입니다.
  • Active: 현재 사용 중인 객체의 수 (예: 실행 중인 컨테이너, 실행 중인 컨테이너에서 사용되는 이미지) 입니다.
  • Size: 객체에서 소비하는 총 디스크 공간입니다.
  • Reclaimable: 사용하지 않는 객체를 제거하여 확보할 수 있는 디스크 공간의 양입니다.

더 자세한 보기를 얻으려면 자세한 출력을 위해 -v 플래그를 사용할 수 있습니다.

docker system df -v

이렇게 하면 개별 이미지, 컨테이너 및 볼륨 목록과 해당 크기를 포함하여 더 자세한 분석이 제공됩니다.

Docker 의 디스크 사용량을 이해하는 것은 건전한 Docker 환경을 유지하고 디스크가 가득 차는 것을 방지하는 데 중요합니다. docker system df의 정보를 사용하여 사용하지 않는 이미지, 컨테이너 또는 볼륨을 정리할 시기를 결정할 수 있습니다.

요약

이 랩에서는 docker container ls 명령 (또는 docker ps라고도 함) 을 사용하여 Docker 컨테이너를 나열하는 방법을 배웠습니다. docker ps를 사용하여 실행 중인 컨테이너만 나열하는 것으로 시작하여 -a 플래그를 추가하여 중지된 컨테이너를 포함한 모든 컨테이너를 표시하는 방법을 배웠습니다.

또한 --filter 옵션을 사용하여 상태 및 이름과 같은 기준에 따라 컨테이너 목록을 필터링하는 방법을 살펴보았습니다. 또한 --format 플래그를 사용하여 특정 정보를 표시하도록 출력 형식을 사용자 정의하는 방법과 docker system df 명령을 사용하여 컨테이너의 디스크 사용량을 확인하는 방법을 배웠습니다.