docker buildx history inspect attachment 명령을 사용하여 빌드 첨부 파일 검사 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker buildx history inspect attachment 명령을 사용하여 Docker 이미지 빌드와 관련된 첨부 파일을 검사하는 방법을 배우게 됩니다. 먼저 Docker 이미지를 빌드하고 --attest 플래그를 사용하여 파일을 첨부하는 것으로 시작합니다.

빌드 후에는 빌드 기록을 나열하여 첨부 파일이 포함된 빌드의 참조를 식별하는 방법을 살펴봅니다. 마지막으로, 얻은 참조를 사용하여 첨부 파일을 검사하는 연습을 하고, 첨부 파일 유형과 플랫폼을 지정하여 검사를 더욱 세분화합니다. 이 실습을 통해 Docker 이미지 내에 포함된 메타데이터에 액세스하고 검증하는 방법을 보여줍니다.

첨부 파일이 있는 이미지 빌드

이 단계에서는 Docker 이미지를 빌드하고 메타데이터를 첨부하는 방법을 배웁니다. 첨부 파일은 빌드 출처, 소프트웨어 자재 명세서 (SBOM), 또는 기타 관련 데이터와 같은 추가 정보를 이미지에 포함하는 방법입니다.

먼저, 간단한 Dockerfile 을 만들어 보겠습니다. 아직 해당 디렉토리에 있지 않다면 ~/project 디렉토리로 이동합니다.

cd ~/project

이제 nano 편집기를 사용하여 Dockerfile이라는 파일을 만듭니다.

nano Dockerfile

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

FROM alpine:latest
CMD ["echo", "Hello, Docker Attachments!"]

이 Dockerfile 은 매우 간단합니다. alpine:latest 이미지를 기본 이미지로 사용하고 컨테이너가 시작될 때 메시지를 출력하는 명령을 정의합니다.

파일을 저장하고 nano를 종료합니다 ( Ctrl + X, 다음 Y, 다음 Enter ).

다음으로, 이미지에 첨부할 파일을 만들어야 합니다. attachment.txt라는 간단한 텍스트 파일을 만들어 보겠습니다.

nano attachment.txt

attachment.txt에 내용을 추가합니다. 예를 들어 다음과 같습니다.

This is an example attachment for the Docker image.
It can contain any relevant metadata.

파일을 저장하고 nano를 종료합니다.

이제 Docker 이미지를 빌드하고 attachment.txt 파일을 첨부합니다. --attest 플래그와 함께 docker build 명령을 사용합니다. --attest 플래그를 사용하면 이미지 빌드에 포함할 첨부 파일을 지정할 수 있습니다. 형식은 type=type,dest=destination,src=source입니다.

이 경우, 유형으로 type=sbom (Software Bill of Materials) 을 사용하고, 첨부 파일 내의 대상 경로로 dest=/sbom/attachment.txt를 사용하며, 로컬 파일 시스템의 소스 파일로 src=attachment.txt를 사용합니다. 또한 이미지를 my-attached-image:latest로 태그합니다.

빌드하기 전에 필요한 buildx 플러그인이 설치되어 있는지 확인하십시오. 그렇지 않은 경우 설치해야 할 수 있습니다. 그러나 기본 첨부 파일의 경우 내장 빌더로 충분합니다.

이미지를 빌드해 보겠습니다.

docker build -t my-attached-image:latest --attest type=sbom,dest=/sbom/attachment.txt,src=attachment.txt .

명령어 끝의 .은 빌드 컨텍스트, 즉 현재 디렉토리 (~/project) 를 지정합니다.

이미지가 빌드되고 첨부 파일이 처리되고 있음을 나타내는 출력을 볼 수 있습니다.

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

docker images

목록에 my-attached-image가 표시됩니다.

참조를 찾기 위해 빌드 기록 나열

이전 단계에서 첨부 파일과 함께 Docker 이미지를 빌드했습니다. 이제 이 첨부 파일의 참조를 찾아 검사해야 합니다. 첨부 파일은 최종 이미지 태그가 아닌 빌드 기록과 연결됩니다.

docker buildx imagetools inspect 명령을 사용하여 이미지 및 관련 첨부 파일에 대한 정보를 볼 수 있습니다. 이 명령에는 이미지 참조가 필요합니다.

빌드한 이미지인 my-attached-image:latest를 검사해 보겠습니다.

docker buildx imagetools inspect my-attached-image:latest

이 명령은 이미지 매니페스트에 대한 자세한 정보를 출력합니다. 출력에서 attestations 섹션을 찾습니다. 이 섹션은 이미지와 관련된 첨부 파일을 나열합니다.

attestations 섹션 내에서 각 첨부 파일에 대한 항목을 찾을 수 있습니다. 각 항목에는 ref 필드가 있습니다. 이 ref는 첨부 파일 내용을 검사하는 데 필요한 참조입니다. sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx과 같은 형태일 것입니다.

추가한 첨부 파일 ( type=sbom이 있는 것) 에 대한 ref 필드의 값을 복사합니다. 이것이 다음 단계에서 사용할 참조입니다.

예를 들어, 출력이 다음과 같이 표시되는 경우:

{
  "manifest": {
    ...
  },
  "attestations": [
    {
      "ref": "sha256:abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890",
      "type": "sbom",
      "platform": {
        "architecture": "amd64",
        "os": "linux"
      }
    }
  ]
}

필요한 참조는 sha256:abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890입니다. 실제 참조는 다를 것입니다.

다음 단계를 위해 이 참조를 준비해 두십시오.

참조를 사용하여 첨부 파일 검사

이전 단계에서 docker buildx imagetools inspect를 사용하여 Docker 이미지와 관련된 첨부 파일의 참조를 찾았습니다. 이제 이 참조를 사용하여 첨부 파일의 내용을 검사합니다.

docker buildx attestation inspect 명령을 사용하여 참조를 통해 특정 첨부 파일의 세부 정보를 볼 수 있습니다.

이전 단계에서 얻은 참조를 기억하십시오. sha256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 형식이어야 합니다.

<attachment_reference>를 복사한 실제 참조로 바꿉니다.

docker buildx attestation inspect <attachment_reference>

예를 들어, 참조가 sha256:abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890인 경우 명령은 다음과 같습니다.

docker buildx attestation inspect sha256:abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890

이 명령은 첨부 파일의 내용을 출력합니다. 1 단계에서 attachment.txt 파일에 추가한 텍스트를 볼 수 있습니다.

출력에는 첨부 파일에 대한 일부 메타데이터와 실제 내용이 포함될 것입니다. "This is an example attachment..." 텍스트가 포함된 섹션을 찾습니다.

이것은 고유한 참조를 사용하여 첨부 파일의 내용을 검색하는 방법을 보여줍니다. 이는 첨부된 데이터의 무결성 및 내용을 확인하는 데 유용합니다.

유형 및 플랫폼 지정하여 첨부 파일 검사

이전 단계에서는 직접 참조를 사용하여 첨부 파일을 검사했습니다. 그러나 첨부 파일 유형과 빌드된 플랫폼을 지정하여 이미지와 관련된 첨부 파일을 검사할 수도 있습니다. 이는 이미지가 서로 다른 유형 또는 서로 다른 아키텍처의 여러 첨부 파일을 갖는 경우 특히 유용합니다.

docker buildx attestation inspect 명령을 다시 사용하지만, 이번에는 이미지 참조, 첨부 파일 유형 및 플랫폼을 제공합니다.

이미지 참조는 my-attached-image:latest입니다.
사용된 첨부 파일 유형은 sbom입니다.
빌드에 대한 플랫폼은 일반적으로 LabEx 환경에서 linux/amd64입니다.

명령 형식은 docker buildx attestation inspect <image_reference> --type <attachment_type> --platform <platform>입니다.

이 방법을 사용하여 첨부 파일을 검사해 보겠습니다.

docker buildx attestation inspect my-attached-image:latest --type sbom --platform linux/amd64

이 명령은 이전 단계와 유사하게 첨부 파일의 내용도 출력해야 합니다. 이는 이미지, 유형 및 플랫폼을 지정하여 첨부 파일 정보를 검색할 수 있음을 확인합니다.

이 방법은 찾고 있는 첨부 파일의 유형과 이미지의 플랫폼을 알고 있는 경우, 먼저 imagetools inspect를 사용하여 특정 첨부 파일 참조를 찾을 필요가 없으므로 더 편리합니다.

이제 첨부 파일과 함께 Docker 이미지를 빌드하고 직접 참조와 이미지, 유형 및 플랫폼을 지정하여 해당 첨부 파일을 검사하는 방법을 배웠습니다.

요약

이 랩에서는 --attest 플래그와 함께 docker build 명령을 사용하여 첨부 파일 유형, 첨부 파일 내 대상 및 소스 파일을 지정하여 첨부 파일이 있는 Docker 이미지를 빌드하는 방법을 배웠습니다. 그런 다음 docker buildx history를 사용하여 빌드 기록을 나열하여 첨부 파일이 포함된 빌드의 참조를 식별하는 방법을 살펴보았습니다.

마지막으로, docker buildx history inspect attachment 명령을 사용하여 첨부 파일을 검사하는 연습을 했습니다. 먼저 빌드 참조와 첨부 파일 대상을 제공하고, 이어서 보다 구체적인 검사를 위해 첨부 파일 유형과 플랫폼을 지정했습니다. 이 프로세스는 Docker 이미지 빌드와 관련된 추가 메타데이터를 포함하고 액세스하는 방법을 보여주었습니다.