docker 이미지 히스토리 명령어를 사용하여 이미지 레이어 검사 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker history 명령을 사용하여 Docker 이미지의 레이어를 검사하는 방법을 배우게 됩니다. 이미지 레이어와 해당 생성 명령을 이해하는 것은 Docker 이미지를 디버깅하고 최적화하는 데 매우 중요합니다.

먼저 이미지의 기본 히스토리를 보고, 전체 명령 가시성을 위해 출력 잘림을 비활성화하는 옵션을 살펴보고, 간결한 보기를 위해 조용한 출력 모드를 사용합니다. 또한, 사용자 정의 보고를 위해 Go 템플릿을 사용하여 히스토리 출력을 형식화하고 특정 플랫폼용으로 빌드된 이미지의 히스토리를 표시하는 방법을 배우게 됩니다.

Docker 이미지 히스토리 보기

이 단계에서는 Docker 이미지의 히스토리를 보는 방법을 배우게 됩니다. 이미지의 히스토리는 이미지를 구성하는 레이어와 각 레이어를 생성하는 데 사용된 명령을 보여줍니다. 이는 이미지가 어떻게 빌드되었는지 이해하고 문제를 디버깅하는 데 유용합니다.

먼저 검사할 수 있는 Docker 이미지를 가져와 보겠습니다. 이 예제에서는 ubuntu 이미지를 사용합니다.

docker pull ubuntu

이미지가 가져와지고 있음을 나타내는 출력을 볼 수 있습니다. 가져오기가 완료되면 이미지 이름 또는 ID 를 사용하여 docker history 명령을 사용하여 이미지의 히스토리를 볼 수 있습니다.

docker history ubuntu

docker history 명령의 출력은 여러 열이 있는 테이블을 표시합니다.

  • IMAGE: 이미지 레이어의 ID.
  • CREATED: 레이어가 생성된 시간.
  • CREATED BY: 레이어를 생성하는 데 사용된 명령.
  • SIZE: 레이어의 크기.
  • COMMENT: 레이어와 관련된 모든 주석.

이 히스토리를 통해 ubuntu 이미지를 빌드하기 위해 수행된 단계를 추적하여 실행된 각 명령과 결과 레이어를 확인할 수 있습니다.

출력 잘림 없이 히스토리 보기

이전 단계에서 ubuntu 이미지의 히스토리를 보았습니다. CREATED BY 열의 명령과 같은 일부 출력 내용이 잘린 것을 알아차렸을 수 있습니다. 이는 출력을 간결하게 유지하기 위한 docker history의 기본 동작입니다.

잘림 없이 전체 출력을 보려면 docker history 명령과 함께 --no-trunc 플래그를 사용할 수 있습니다.

ubuntu 이미지로 이를 시도해 보겠습니다.

docker history --no-trunc ubuntu

이제 ubuntu 이미지의 각 레이어를 생성하는 데 사용된 전체 명령을 볼 수 있습니다. 이는 레이어가 어떻게 빌드되었는지 정확한 세부 정보를 확인해야 할 때, 특히 긴 빌드 명령이 있는 복잡한 이미지의 경우 매우 유용할 수 있습니다.

이 명령의 출력과 이전 단계의 출력을 비교하여 CREATED BY 열의 차이점을 확인하십시오.

간결한 출력으로 히스토리 보기

이전 단계에서 각 레이어를 생성하는 데 사용된 명령을 포함하여 ubuntu 이미지의 자세한 히스토리를 보았습니다. 때로는 다른 모든 정보 없이 레이어의 이미지 ID 만 관심 있을 수 있습니다.

이미지 ID 만 표시하는 더 간결한 출력을 보려면 docker history 명령과 함께 -q 또는 --quiet 플래그를 사용할 수 있습니다.

ubuntu 이미지의 히스토리를 간결 모드로 보겠습니다.

docker history -q ubuntu

이제 출력은 레이어의 이미지 ID 만 한 줄에 하나씩 나열합니다. 이는 스크립팅 또는 기타 목적으로 레이어 ID 목록을 빠르게 얻어야 할 때 유용할 수 있습니다.

이 출력을 이전 출력과 비교하여 -q 플래그가 표시되는 정보를 어떻게 단순화하는지 확인하십시오.

Go 템플릿을 사용하여 히스토리 출력 형식 지정

기본 및 간결한 출력 형식 외에도 docker history는 Go 템플릿을 사용하여 출력을 형식 지정할 수 있습니다. 이를 통해 표시할 정보와 표시 방법을 세밀하게 제어할 수 있습니다.

--format 플래그는 Go 템플릿을 지정하는 데 사용됩니다. 템플릿 구문을 사용하여 이미지 히스토리의 다양한 필드에 액세스할 수 있습니다. 몇 가지 일반적인 필드에는 .ID, .Created, .CreatedBy, .Size.Comment가 있습니다.

탭으로 구분된 이미지 ID 와 레이어를 생성하는 데 사용된 명령만 표시하도록 출력을 형식 지정해 보겠습니다.

docker history --format "{{.ID}}\t{{.CreatedBy}}" ubuntu

이 템플릿에서:

  • {{.ID}}는 레이어의 이미지 ID 를 나타냅니다.
  • \t는 구분을 위한 탭 문자입니다.
  • {{.CreatedBy}}는 레이어를 생성하는 데 사용된 명령을 나타냅니다.

필요한 출력을 얻기 위해 다양한 필드와 형식을 실험해 볼 수 있습니다. 예를 들어 크기를 포함하려면 다음과 같이 할 수 있습니다.

docker history --format "{{.ID}}\t{{.Size}}\t{{.CreatedBy}}" ubuntu

Go 템플릿을 사용하면 스크립팅 또는 보고 목적으로 이미지 히스토리에서 특정 정보를 추출하는 강력한 방법을 제공합니다.

특정 플랫폼의 히스토리 보기

Docker 이미지는 다양한 아키텍처와 운영 체제에 대해 빌드될 수 있습니다. 이미지가 여러 플랫폼에서 사용 가능한 경우 특정 플랫폼에 대한 히스토리를 보고 싶을 수 있습니다.

docker history 명령을 사용하면 --platform 플래그를 사용하여 대상 플랫폼을 지정할 수 있습니다. 플랫폼 형식은 일반적으로 os/architecture입니다. 예를 들어, linux/amd64 또는 linux/arm64입니다.

linux/amd64 플랫폼에 대해 ubuntu 이미지의 히스토리를 살펴보겠습니다.

docker history --platform linux/amd64 ubuntu

출력은 linux/amd64 아키텍처용으로 빌드된 ubuntu 이미지의 히스토리를 표시합니다. 이미지가 지정된 플랫폼에서 사용 가능하지 않은 경우 이미지 빌드 방식에 따라 오류 또는 다른 히스토리가 표시될 수 있습니다.

이는 다중 아키텍처 이미지로 작업하고 특정 대상 환경에 대한 빌드 프로세스를 검사해야 할 때 특히 유용합니다.

요약

이 랩에서는 docker history 명령을 사용하여 Docker 이미지의 레이어를 검사하는 방법을 배웠습니다. 먼저 ubuntu 이미지를 가져온 다음 히스토리를 보면서 이미지 ID, 생성 시간, 생성에 사용된 명령 및 크기를 포함한 각 레이어에 대한 정보를 표시했습니다. 이를 통해 이미지의 빌드 프로세스를 명확하게 파악할 수 있습니다.

그런 다음 docker history의 출력을 수정하는 옵션을 살펴보았습니다. 각 레이어를 빌드하는 데 사용된 전체 명령을 보기 위해 --no-trunc 플래그를 사용하여 출력 잘림을 비활성화하는 방법을 배웠습니다. 이는 이미지 생성에 관련된 정확한 단계를 이해하는 데 중요합니다. 또한 이 랩에서는 -q 플래그를 사용하여 이미지 ID 만 표시하는 간결한 출력으로 히스토리를 보고, 사용자 정의 보기를 위해 Go 템플릿으로 출력을 형식화하고, --platform 플래그를 사용하여 특정 플랫폼에 대한 히스토리를 보는 방법을 다룹니다.