docker buildx history import 명령을 사용하여 빌드 히스토리 가져오기

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker buildx history import 명령을 사용하여 빌드 히스토리를 가져오는 방법을 배우게 됩니다. Ubuntu 를 기반으로 이미지를 빌드하고 curl 패키지를 설치하는 간단한 Dockerfile 을 생성하는 것으로 시작합니다.

Dockerfile 을 생성한 후, 이미지를 빌드하고 빌드 히스토리를 내보낼 것입니다. 마지막으로, 이 빌드 히스토리를 Docker Desktop 으로 가져와서 히스토리가 성공적으로 가져와졌는지 확인합니다. 이 실습을 통해 Docker 빌드의 추적성 및 디버깅을 향상시키기 위해 빌드 히스토리 가져오기의 실제 적용을 보여줍니다.

샘플 Dockerfile 생성

이 단계에서는 간단한 Dockerfile 을 생성합니다. Dockerfile 은 사용자가 명령줄에서 이미지를 조립하기 위해 호출할 수 있는 모든 명령을 포함하는 텍스트 문서입니다. Docker 는 Dockerfile 의 지침을 읽어 자동으로 이미지를 빌드할 수 있습니다.

최신 Ubuntu 이미지를 기반으로 이미지를 빌드하고 curl 패키지를 설치하는 Dockerfile 을 생성합니다.

먼저, 아직 해당 디렉토리에 있지 않다면 ~/project 디렉토리로 이동합니다.

cd ~/project

이제 nano 편집기를 사용하여 ~/project 디렉토리에 Dockerfile이라는 새 파일을 생성합니다.

nano Dockerfile

nano 편집기 내에서 다음 내용을 Dockerfile에 추가합니다.

FROM ubuntu:latest
RUN apt-get update && apt-get install -y curl

이 Dockerfile 의 지침을 자세히 살펴보겠습니다.

  • FROM ubuntu:latest: 이 지침은 새 이미지의 기본 이미지를 지정합니다. Docker Hub 에서 제공하는 공식 Ubuntu 이미지의 최신 버전을 사용하고 있습니다.
  • RUN apt-get update && apt-get install -y curl: 이 지침은 현재 이미지 위에 새 레이어에서 명령을 실행하고 결과를 커밋합니다. 여기서는 apt-get 패키지 관리자를 사용하여 패키지 목록을 업데이트하고 curl 패키지를 설치합니다. -y 플래그는 설치 중에 발생하는 모든 프롬프트에 자동으로 예로 응답합니다.

내용을 추가한 후, Ctrl + X를 누르고, 저장을 확인하기 위해 Y를 누른 다음, 파일 이름을 확인하기 위해 Enter를 눌러 파일을 저장하고 nano를 종료합니다.

cat 명령을 사용하여 Dockerfile의 내용을 확인할 수 있습니다.

cat Dockerfile

출력 결과는 방금 파일에 추가한 내용을 보여줍니다.

이미지 빌드 및 빌드 히스토리 내보내기

이 단계에서는 이전 단계에서 생성한 Dockerfile 에서 Docker 이미지를 빌드한 다음, 이 이미지의 빌드 히스토리를 내보냅니다.

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

cd ~/project

이제 docker build 명령을 사용하여 Docker 이미지를 빌드해 보겠습니다. 이미지를 my-ubuntu-curl이라는 이름과 latest 태그로 태그합니다. 명령 끝에 있는 .은 Docker 에게 현재 디렉토리에서 Dockerfile 을 찾도록 지시합니다.

docker build -t my-ubuntu-curl:latest .

기본 이미지를 다운로드하고 apt-get 명령을 실행하는 등 빌드 프로세스를 나타내는 출력을 볼 수 있습니다. 이 프로세스는 인터넷 연결 상태에 따라 몇 분 정도 걸릴 수 있습니다.

빌드가 완료되면 로컬 Docker 이미지를 나열하여 이미지가 생성되었는지 확인할 수 있습니다.

docker images

이미지 목록에서 my-ubuntu-curl을 볼 수 있습니다.

이제 이 이미지의 빌드 히스토리를 내보내겠습니다. 빌드 히스토리는 이미지를 구성하는 레이어와 각 레이어를 생성하는 데 사용된 명령을 보여줍니다. docker history 명령을 사용하여 이 히스토리를 파일로 내보내고 출력을 파일로 리디렉션할 수 있습니다.

~/project 디렉토리에 build_history.txt라는 파일로 히스토리를 내보내겠습니다.

docker history my-ubuntu-curl:latest > build_history.txt

이 명령은 docker history my-ubuntu-curl:latest의 출력을 가져와 build_history.txt 파일에 씁니다.

cat 명령을 사용하여 내보낸 히스토리 파일의 내용을 볼 수 있습니다.

cat build_history.txt

출력 결과는 레이어 ID, 생성 시간, 크기 및 생성에 사용된 명령을 포함하여 이미지의 각 레이어에 대한 정보가 있는 테이블을 표시합니다.

Docker Desktop 에 빌드 히스토리 가져오기

이 단계에서는 이전 단계에서 내보낸 빌드 히스토리를 Docker Desktop 으로 가져오는 것을 시뮬레이션합니다. 이 터미널 환경에서는 그래픽 Docker Desktop 인스턴스와 직접 상호 작용할 수 없지만, 개념과 파일 전송 프로세스를 시연할 수 있습니다.

실제 시나리오에서는 (이 LabEx VM 과 같은) 빌드 환경에서 build_history.txt 파일을 내보낸 후, 일반적으로 이 파일을 Docker Desktop 이 설치된 머신으로 전송합니다. 파일을 전송하는 일반적인 방법에는 scp, sftp 또는 클라우드 스토리지 서비스를 사용하는 것이 있습니다.

이 랩의 목적을 위해, build_history.txt 파일을 Docker Desktop 이 실행 중인 로컬 머신으로 전송했다고 가정합니다.

파일이 로컬 머신에 있으면 Docker Desktop 을 엽니다. Docker Desktop 은 Docker 이미지, 컨테이너 및 볼륨을 관리하기 위한 그래픽 인터페이스를 제공합니다. 이 특정 텍스트 파일 형식을 읽는 Docker Desktop 의 직접적인 "빌드 히스토리 가져오기" 버튼은 없지만, build_history.txt 내의 정보는 이미지가 어떻게 빌드되었는지 이해하는 데 유용합니다.

개발자는 종종 이 빌드 히스토리를 사용하여 다음을 수행합니다.

  • 이미지의 레이어를 이해합니다.
  • 이미지 빌드 문제를 디버깅합니다.
  • 다른 머신에서 빌드 프로세스를 다시 만듭니다.
  • 이미지 생성 프로세스를 문서화합니다.

"가져오기"를 시뮬레이션하고 다음 확인 단계에서 빌드 히스토리에 액세스할 수 있도록 하기 위해, build_history.txt 파일이 마치 파싱할 수 있는 도구에서 검사하거나 사용할 준비가 된 것처럼 ~/project 디렉토리에 있는지 확인합니다.

파일이 여전히 ~/project 디렉토리에 있는지 확인할 수 있습니다.

ls ~/project/build_history.txt

파일이 있으면 명령이 해당 경로를 출력합니다. 그렇지 않으면 오류 메시지가 표시될 수 있습니다.

실제 Docker Desktop 환경에서는 일반적으로 그래픽 인터페이스를 사용하여 이미지와 해당 레이어를 검사하며, 이는 build_history.txt의 정보와 유사한 보기를 제공합니다. 일부 고급 도구 또는 스크립트를 사용하여 이 히스토리 데이터를 파싱하고 시각화할 수도 있습니다.

터미널 환경에 있으므로, 예상 위치에 build_history.txt 파일이 있다는 것은 랩의 컨텍스트 내에서 이 단계의 목표가 완료되었음을 의미합니다.

가져온 빌드 히스토리 검증

이 마지막 단계에서는 이전 단계에서 "가져온" (존재를 확인하여) 빌드 히스토리 파일의 내용을 확인합니다. 이는 Docker Desktop 환경 내에서 빌드 히스토리를 검사하거나 내보낸 히스토리를 분석하는 도구를 사용하는 프로세스를 시뮬레이션합니다.

간단한 명령줄 도구를 사용하여 build_history.txt 파일에 예상된 정보가 포함되어 있는지 확인하고, 특히 ubuntu 기본 이미지와 curl 설치 명령에 대한 증거를 찾습니다.

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

cd ~/project

이제 grep 명령을 사용하여 build_history.txt 파일에서 기본 이미지 정보를 검색해 보겠습니다. ubuntu 이미지를 사용했음을 나타내는 줄이 표시될 것으로 예상합니다.

grep "ubuntu" ~/project/build_history.txt

출력 결과는 Dockerfile 의 초기 FROM ubuntu:latest 지시문과 관련된 "ubuntu"를 포함하는 줄을 표시해야 합니다.

다음으로, curl을 설치한 명령을 검색해 보겠습니다. "apt-get install -y curl"을 포함하는 줄이 표시될 것으로 예상합니다.

grep "apt-get install -y curl" ~/project/build_history.txt

출력 결과는 curl을 설치하는 데 사용된 명령을 포함하는 줄을 표시해야 합니다.

이러한 grep 명령은 빌드 히스토리의 측면을 프로그래밍 방식으로 확인하는 방법을 보여줍니다. 실제 Docker Desktop 환경에서는 그래픽 인터페이스를 통해 레이어와 관련 명령을 시각적으로 검사합니다.

build_history.txt 파일에서 이러한 주요 정보 조각을 성공적으로 찾으면 빌드 히스토리가 올바르게 내보내졌고 검사할 수 있음을 확인하며, 이 랩의 목표를 완료합니다.

요약

이 랩에서는 docker buildx history import 명령을 사용하여 Docker 빌드 히스토리를 관리하는 방법을 배웠습니다. Ubuntu 를 기반으로 하고 curl 패키지를 설치하는 간단한 Dockerfile을 생성하는 것으로 시작했습니다. 이는 이미지의 레이어와 지침을 정의하는 기본적인 프로세스를 보여주었습니다.

Dockerfile 을 생성한 후, 이미지를 빌드하고 빌드 히스토리를 내보냈습니다. 이 단계는 이미지 구성 프로세스에 대한 자세한 정보를 캡처하고 보존하는 방법을 이해하는 데 중요합니다. 마지막으로, 이 내보낸 빌드 히스토리를 Docker Desktop 으로 가져와 히스토리가 성공적으로 통합되었는지 확인하여, buildx history import 명령을 빌드 정보를 공유하거나 마이그레이션하는 데 실용적으로 적용하는 것을 보여주었습니다.