Docker 컨테이너 정보 확인: docker inspect 명령어 사용법

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker inspect 명령을 사용하여 Docker 컨테이너에 대한 자세한 정보를 확인하는 방법을 배우게 됩니다. 실행 중인 컨테이너와 중지된 컨테이너를 모두 검사하는 방법, 기본 JSON 출력 형식을 이해하는 방법, 그리고 사용자 정의 보기를 위해 Go 템플릿을 사용하여 출력을 형식화하는 방법을 살펴볼 것입니다. 또한 docker inspect 명령을 사용하여 컨테이너 크기 정보를 표시하는 방법도 배우게 됩니다.

실습을 통해 docker inspect를 사용하여 중요한 구성, 상태 및 네트워크 세부 정보를 검색하는 실질적인 경험을 얻게 될 것입니다. 이는 Docker 환경의 문제 해결 및 관리에 필수적입니다.

실행 중인 컨테이너 검사

이 단계에서는 실행 중인 Docker 컨테이너를 검사하는 방법을 배우게 됩니다. docker inspect 명령은 컨테이너의 구성, 네트워크 설정 및 상태를 포함한 자세한 정보를 제공합니다.

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

docker run -d --name my-running-container ubuntu sleep infinity

위 명령에서:

  • docker run: 이 명령은 새 컨테이너를 실행하는 데 사용됩니다.
  • -d: 이 플래그는 컨테이너를 detached 모드 (백그라운드에서 실행됨) 로 실행합니다.
  • --name my-running-container: 컨테이너에 이름을 할당하여 참조를 용이하게 합니다.
  • ubuntu: 이것은 우리가 사용하고 있는 이미지입니다. 이미지가 로컬에서 사용 가능하지 않은 경우 Docker 가 이를 가져옵니다.
  • sleep infinity: 이 명령은 컨테이너 내부에서 실행되며 무한정 컨테이너를 실행 상태로 유지합니다.

이제 컨테이너가 실행 중이므로 검사할 수 있습니다. docker inspect 명령 다음에 컨테이너 이름을 사용합니다.

docker inspect my-running-container

이 명령은 my-running-container에 대한 모든 세부 정보를 포함하는 큰 JSON 객체를 출력합니다. Id, State, Config, NetworkSettings 등과 같은 다양한 섹션을 보려면 출력을 스크롤할 수 있습니다.

출력을 더 읽기 쉽게 만들거나 특정 정보를 추출하기 위해 출력을 jq (가볍고 유연한 명령줄 JSON 프로세서) 와 같은 도구로 파이프할 수 있습니다. 그러나 이 랩에서는 기본 docker inspect 명령에 집중할 것입니다.

컨테이너를 검사한 후에는 환경을 정리하기 위해 컨테이너를 중지하고 제거할 수 있습니다.

docker stop my-running-container
docker rm my-running-container
  • docker stop my-running-container: 이 명령은 실행 중인 컨테이너를 중지합니다.
  • docker rm my-running-container: 이 명령은 중지된 컨테이너를 제거합니다.

정지된 컨테이너 검사

이 단계에서는 현재 실행 중이지 않은 컨테이너도 검사할 수 있다는 것을 배우게 됩니다. docker inspect 명령은 실행 중인 컨테이너와 중지된 컨테이너 모두에서 작동하며, 구성 및 최종 상태에 대한 액세스를 제공합니다.

먼저, 잠시 후에 종료되는 간단한 컨테이너를 실행해 보겠습니다.

docker run --name my-stopped-container ubuntu sleep 5

이 명령에서:

  • docker run: 새 컨테이너를 실행합니다.
  • --name my-stopped-container: 컨테이너에 이름을 할당합니다.
  • ubuntu: 사용할 이미지입니다.
  • sleep 5: 컨테이너 내부에서 실행되는 명령으로, 5 초 후에 종료됩니다.

컨테이너가 sleep 5 명령을 실행하고 중지될 때까지 몇 초 동안 기다립니다. docker ps -a를 사용하여 (중지된 컨테이너를 포함한) 모든 컨테이너를 나열하여 컨테이너가 중지되었는지 확인할 수 있습니다.

docker ps -a

종료되었음을 나타내는 상태와 함께 목록에 my-stopped-container가 표시되어야 합니다.

이제 이전 단계에서 실행 중인 컨테이너와 마찬가지로 docker inspect 명령을 사용하여 중지된 컨테이너를 검사할 수 있습니다.

docker inspect my-stopped-container

다시 자세한 JSON 출력을 보게 됩니다. State 섹션에는 컨테이너의 종료 상태 및 완료 시기에 대한 정보가 표시됩니다.

중지된 컨테이너를 검사하는 것은 컨테이너가 종료된 이유를 디버깅하거나 이해하는 데 유용합니다.

마지막으로, 중지된 컨테이너를 정리합니다.

docker rm my-stopped-container

JSON 형식으로 inspect 출력 포맷팅

이 단계에서는 docker inspect 명령의 출력을 JSON 배열로 특정하게 형식화하는 방법을 배우게 됩니다. 이는 여러 객체 (컨테이너 또는 이미지 등) 를 한 번에 검사할 때 특히 유용하며, 다른 도구나 스크립트에서 쉽게 구문 분석할 수 있는 구조화된 출력을 제공합니다.

먼저, 계속 실행될 두 개의 간단한 컨테이너를 실행해 보겠습니다.

docker run -d --name container1 ubuntu sleep infinity
docker run -d --name container2 ubuntu sleep infinity

이제 두 컨테이너를 검사하고 출력을 JSON 배열로 형식화해 보겠습니다. docker inspect 명령에 여러 컨테이너 이름을 제공하여 이를 수행할 수 있습니다.

docker inspect container1 container2

출력은 container1container2 모두에 대한 검사 세부 정보를 포함하는 단일 JSON 배열이 됩니다. 배열의 각 요소는 단일 컨테이너에 대한 JSON 객체입니다.

이 형식은 여러 객체를 검사할 때 기본값입니다. 구조화된 데이터 목록을 나타내는 표준 방법입니다.

검사 후 컨테이너를 중지하고 제거합니다.

docker stop container1 container2
docker rm container1 container2

Go 템플릿을 사용하여 inspect 출력 포맷팅

이 단계에서는 docker inspect 명령의 출력을 형식화하기 위해 Go 템플릿을 사용하는 방법을 배우게 됩니다. 이를 통해 자세한 JSON 출력에서 특정 정보 조각을 추출하여 사용자 지정 형식으로 표시할 수 있습니다.

먼저, 계속 실행되는 컨테이너를 실행해 보겠습니다.

docker run -d --name my-templated-container ubuntu sleep infinity

이제 이 컨테이너를 검사하고 Go 템플릿을 사용하여 IP 주소만 표시해 보겠습니다. IP 주소는 검사 출력의 NetworkSettings.IPAddress 필드 내에 있습니다.

docker inspect --format '{{.NetworkSettings.IPAddress}}' my-templated-container

이 명령에서:

  • --format '{{.NetworkSettings.IPAddress}}': 이 플래그는 Go 템플릿을 사용하여 형식을 지정합니다.
    • {{...}}: 이중 중괄호는 Go 템플릿에서 작업을 나타냅니다.
    • .: 이는 검사 중인 루트 객체 (컨테이너) 를 나타냅니다.
    • NetworkSettings: 이는 루트 객체 내의 NetworkSettings 필드에 액세스합니다.
    • IPAddress: 이는 NetworkSettings 객체 내의 IPAddress 필드에 액세스합니다.

이 명령의 출력은 컨테이너의 IP 주소만 표시됩니다.

Go 템플릿을 사용하여 다양한 정보 조각을 추출할 수 있습니다. 예를 들어, 컨테이너의 이름과 ID 를 얻으려면 다음과 같이 할 수 있습니다.

docker inspect --format 'Name: {{.Name}}, ID: {{.Id}}' my-templated-container

그러면 Name: /my-templated-container, ID: <container_id>와 같은 출력이 생성됩니다.

Go 템플릿은 조건문, 루프 및 함수를 포함한 강력한 형식 지정 기능을 제공합니다. 그러나 이 기본 예제에서는 필드에 액세스하기만 합니다.

검사 후 컨테이너를 중지하고 제거합니다.

docker stop my-templated-container
docker rm my-templated-container

컨테이너 크기 정보 표시

이 단계에서는 Docker 컨테이너의 크기 정보를 표시하는 방법을 배우게 됩니다. 이는 디스크 사용량을 모니터링하고 컨테이너의 공간 점유율을 이해하는 데 도움이 될 수 있습니다.

기본적으로 docker ps 명령은 컨테이너의 크기를 표시하지 않습니다. 크기 정보를 포함하려면 --size 또는 -s 플래그를 사용할 수 있습니다.

먼저, 간단한 컨테이너를 실행해 보겠습니다.

docker run -d --name my-size-container ubuntu sleep infinity

이제 실행 중인 컨테이너를 나열하고 크기 정보를 포함합니다.

docker ps --size

또는

docker ps -s

출력에서 SIZE라는 추가 열을 볼 수 있습니다. 이 열은 두 가지 값을 표시합니다.

  1. 컨테이너의 쓰기 가능한 레이어의 크기 (컨테이너가 생성된 이후 컨테이너 파일 시스템에 적용된 변경 사항).
  2. 컨테이너의 총 크기, 여기에는 이미지 레이어의 크기와 쓰기 가능한 레이어가 포함됩니다.

쓰기 가능한 레이어의 크기는 많은 데이터를 쓰지 않는 간단한 컨테이너의 경우 종종 작습니다. 총 크기는 기본 이미지 크기를 포함하므로 더 커집니다.

docker ps -a --size를 사용하여 모든 컨테이너 (중지된 컨테이너 포함) 를 나열할 때도 크기 정보를 볼 수 있습니다.

docker ps -a --size

이는 종료되었지만 아직 제거되지 않은 컨테이너의 크기를 확인하는 데 유용합니다.

컨테이너 크기를 이해하는 것은 Docker 호스트에서 디스크 공간을 관리하는 데 중요합니다.

마지막으로, 컨테이너를 중지하고 제거합니다.

docker stop my-size-container
docker rm my-size-container

요약

이 랩에서는 docker inspect 명령을 사용하여 Docker 컨테이너에 대한 자세한 정보를 확인하는 방법을 배웠습니다. 실행 중인 컨테이너와 중지된 컨테이너를 모두 검사하는 연습을 했으며, 이 명령이 컨테이너의 상태에 관계없이 포괄적인 데이터를 제공한다는 것을 이해했습니다.

또한, docker inspect 출력 형식을 지정하는 방법을 탐구했습니다. 특히 전체 세부 정보를 JSON 으로 출력하고 Go 템플릿을 사용하여 특정 정보 조각을 추출하고 표시하는 방법을 배웠습니다. 마지막으로, --size 플래그를 사용하여 검사 출력에 컨테이너 크기 정보를 포함하는 방법을 배웠습니다.