docker buildx history export 를 사용하여 빌드 기록 내보내는 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker buildx history export 명령을 사용하여 Docker 빌드 기록을 관리하고 내보내는 방법을 배우게 됩니다. 먼저 간단한 Docker 이미지를 빌드하고 docker history 명령을 사용하여 빌드 기록을 검토하는 것으로 시작합니다.

그 다음, 특정 이미지의 빌드 기록을 파일로 내보내는 방법을 배우게 됩니다. 마지막으로, 주어진 빌더에 대한 모든 빌드 기록을 내보내는 방법을 살펴보고 빌드 활동에 대한 포괄적인 개요를 제공합니다. 이 랩을 통해 Docker 이미지 빌드 프로세스를 효과적으로 추적하고 관리하는 기술을 습득할 수 있습니다.

간단한 이미지 빌드 및 기록 보기

이 단계에서는 간단한 Docker 이미지를 빌드하고 기록을 보는 방법을 배우겠습니다. Docker 이미지를 빌드하려면 Dockerfile을 생성해야 합니다. Dockerfile은 사용자가 명령줄에서 이미지를 조립하기 위해 호출할 수 있는 모든 명령을 포함하는 텍스트 파일입니다.

먼저, 아직 이동하지 않았다면 ~/project 디렉토리로 이동합니다.

cd ~/project

이제 간단한 Dockerfile을 만들어 보겠습니다. ~/project 디렉토리에 Dockerfile이라는 파일을 생성합니다.

nano Dockerfile

다음 내용을 Dockerfile에 추가합니다.

FROM ubuntu:latest
RUN echo "Hello, Docker!" > /app/hello.txt
CMD ["cat", "/app/hello.txt"]

Dockerfile은 다음 작업을 수행합니다.

  • FROM ubuntu:latest: 이 줄은 새 이미지의 기본 이미지를 지정합니다. Docker Hub 에서 최신 버전의 Ubuntu 이미지를 사용하고 있습니다.
  • RUN echo "Hello, Docker!" > /app/hello.txt: 이 줄은 이미지 빌드 프로세스 중에 명령을 실행합니다. /app 디렉토리를 생성하고 해당 디렉토리 내의 hello.txt 파일에 "Hello, Docker!" 텍스트를 씁니다.
  • CMD ["cat", "/app/hello.txt"]: 이 줄은 이 이미지에서 컨테이너가 시작될 때 실행할 기본 명령을 지정합니다. cat /app/hello.txt 명령을 실행하여 hello.txt 파일의 내용을 출력합니다.

파일을 저장하고 nano 편집기를 종료합니다 ( Ctrl + X를 누른 다음 Y를 누르고 Enter를 누릅니다).

이제 docker build 명령을 사용하여 Docker 이미지를 빌드해 보겠습니다. 이미지를 my-hello-image라는 이름과 latest 태그로 태그합니다. 명령 끝의 .Dockerfile이 현재 디렉토리에 있음을 나타냅니다.

docker build -t my-hello-image:latest .

빌드 프로세스를 나타내는 출력이 표시되며 각 단계가 실행되는 것을 보여줍니다.

이미지가 빌드된 후 docker history 명령을 사용하여 이미지의 기록을 볼 수 있습니다. 이 명령은 이미지를 구성하는 레이어와 각 레이어를 생성하는 데 사용된 명령을 보여줍니다.

docker history my-hello-image:latest

출력에는 레이어 ID, 사용된 명령, 생성 시간 및 크기를 포함한 각 레이어에 대한 정보가 있는 테이블이 표시됩니다. 이 기록은 이미지가 어떻게 빌드되었는지 이해하고 빌드 문제를 디버깅하는 데 유용합니다.

빌드 기록을 파일로 내보내기

이전 단계에서는 Docker 이미지의 빌드 기록을 터미널에서 직접 확인했습니다. 이 단계에서는 이 빌드 기록을 나중에 분석하거나 공유할 수 있도록 파일로 내보내는 방법을 배우겠습니다.

표준 출력 리디렉션 연산자 >를 사용하여 docker history 명령의 출력을 파일로 리디렉션할 수 있습니다. my-hello-image:latest 이미지의 기록을 ~/project 디렉토리에 있는 history.txt라는 파일로 내보내 보겠습니다.

~/project 디렉토리에 있는지 확인합니다.

cd ~/project

이제 다음 명령을 실행하여 기록을 내보냅니다.

docker history my-hello-image:latest > history.txt

이 명령은 docker history my-hello-image:latest를 실행하고 출력을 화면에 표시하는 대신 history.txt 파일에 출력을 씁니다.

cat 명령을 사용하여 파일의 내용을 확인하여 파일이 생성되었고 빌드 기록이 포함되어 있는지 확인할 수 있습니다.

cat history.txt

이전 단계에서 보았던 것과 동일한 빌드 기록 정보를 볼 수 있지만, 이제는 history.txt 파일에 저장됩니다. 이 파일은 쉽게 공유하거나 문서화 목적으로 사용할 수 있습니다.

빌드 기록을 파일로 내보내는 것은 Docker 이미지가 어떻게 빌드되는지 기록하는 유용한 방법이며, 디버깅, 감사 및 협업에 도움이 될 수 있습니다.

빌더의 모든 빌드 기록 내보내기

이전 단계에서는 Docker 이미지를 빌드하고 해당 기록을 내보냈습니다. Docker 의 기본 빌더인 Docker BuildKit 은 모든 빌드 작업의 기록을 유지합니다. 이 단계에서는 이러한 모든 빌드 기록을 내보내는 방법을 배우겠습니다.

모든 빌드 기록을 내보내려면 --metadata-file 플래그와 함께 docker buildx build 명령을 사용할 수 있습니다. 이 플래그를 사용하면 빌드 기록을 포함한 빌드 메타데이터가 JSON 형식으로 기록될 파일을 지정할 수 있습니다.

먼저, ~/project 디렉토리에 있는지 확인합니다.

cd ~/project

이제 이미지를 다시 빌드하지만, 이번에는 빌드 메타데이터를 build-records.json이라는 파일로 내보내겠습니다. 첫 번째 단계에서 생성한 동일한 Dockerfile을 사용합니다.

docker buildx build --metadata-file build-records.json -t my-hello-image:latest .

docker buildx build 명령은 향상된 빌드 기능을 제공하는 Docker Buildx 플러그인의 일부입니다. --metadata-file build-records.json 플래그는 BuildKit 에 지정된 파일에 빌드 메타데이터를 쓰도록 지시합니다.

빌드가 완료되면 ~/project 디렉토리에 build-records.json이라는 파일이 생성됩니다. 이 파일에는 JSON 형식의 빌드 프로세스에 대한 자세한 정보가 포함되어 있습니다.

cat 명령을 사용하여 build-records.json 파일의 내용을 볼 수 있습니다.

cat build-records.json

출력은 빌드 단계, 결과 이미지 및 기타 메타데이터에 대한 정보를 포함하여 빌드에 대한 다양한 세부 정보를 포함하는 JSON 객체입니다. 이 포괄적인 기록은 고급 분석, 자동화 및 다른 도구와의 통합에 유용할 수 있습니다.

빌드 기록을 내보내면 이미지 기록만 보는 것보다 빌드 프로세스에 대한 더 자세한 보기를 제공하여 각 빌드 단계의 실행 및 관련된 종속성에 대한 통찰력을 제공합니다.

요약

이 Lab 에서는 빌드 프로세스에 대한 지침이 포함된 Dockerfile을 생성하여 간단한 Docker 이미지를 빌드하는 방법을 배웠습니다. 여기에는 기본 이미지 지정, 빌드 중에 명령 실행, 컨테이너의 기본 명령 정의 등이 포함됩니다. 그런 다음 docker build 명령을 사용하여 이미지를 생성하고 쉽게 식별할 수 있도록 태그를 지정했습니다.

이미지 빌드 후, docker history 명령을 사용하여 이미지의 기록을 보는 방법을 살펴보았습니다. 이 명령은 이미지를 구성하는 데 사용된 레이어와 명령에 대한 통찰력을 제공합니다. 그런 다음 Lab 에서는 docker buildx history export를 사용하여 특정 이미지의 빌드 기록을 파일로 내보내는 방법과 현재 빌더에 대한 모든 빌드 기록을 내보내는 방법을 안내하여 빌드 세부 정보를 보존하고 검토하는 방법을 보여주었습니다.