docker scout quickview 명령어를 사용하여 이미지 개요 얻는 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker inspect 명령을 사용하여 Docker 이미지에 대한 간략한 개요를 얻는 방법을 배우게 됩니다. 특정 이미지에 대한 자세한 정보를 얻고, 가장 최근에 빌드된 이미지를 식별하고 검사하며, 형식 옵션을 사용하여 검사 출력에서 관련 데이터를 추출하는 방법을 살펴보겠습니다. 이 랩에서는 샘플 이미지와 간단한 Dockerfile 을 사용하여 실용적인 예제를 안내합니다.

특정 이미지의 간략한 개요 확인

이 단계에서는 docker inspect 명령을 사용하여 특정 Docker 이미지에 대한 간략한 개요를 얻는 방법을 배우게 됩니다. 이 명령은 이미지, 컨테이너, 볼륨 및 네트워크를 포함한 Docker 객체에 대한 자세한 정보를 제공합니다.

먼저, 검사할 수 있는 샘플 이미지를 가져와 보겠습니다. 테스트에 사용되는 매우 작은 이미지인 hello-world 이미지를 사용합니다.

docker pull hello-world

이미지가 가져와 다운로드되고 있음을 나타내는 출력을 볼 수 있습니다.

이제 이미지가 있으므로 docker inspect를 사용하여 이미지에 대한 정보를 얻을 수 있습니다.

docker inspect hello-world

이 명령은 ID, 생성 날짜, 아키텍처, 운영 체제 및 구성을 포함하여 hello-world 이미지에 대한 다양한 세부 정보를 포함하는 큰 JSON 객체를 출력합니다.

간략한 개요를 얻으려면 이 JSON 출력 내의 특정 필드에 관심이 있을 수 있습니다. docker inspect와 함께 -f 또는 --format 플래그를 사용하여 출력을 형식화하는 Go 템플릿을 지정할 수 있습니다. 예를 들어, 이미지 ID 와 생성 날짜를 보려면 다음 명령을 사용할 수 있습니다.

docker inspect -f '{{.Id}} {{.Created}}' hello-world

이 명령은 이미지 ID 와 그 뒤에 생성 타임스탬프를 출력합니다. {{.Id}}{{.Created}}docker inspect의 JSON 출력에서 IdCreated 필드를 참조하는 자리 표시자입니다.

전체 docker inspect hello-world 명령의 JSON 출력에서 다른 필드를 탐색하고 형식 문자열에서 사용하여 필요한 특정 정보를 얻을 수 있습니다.

가장 최근에 빌드된 이미지의 간략한 개요 확인

이 단계에서는 가장 최근에 빌드된 Docker 이미지를 식별하고 간략한 개요를 얻는 방법을 배우게 됩니다. 이는 이미지를 적극적으로 개발하고 빌드하며 최신 버전을 빠르게 검사하려는 경우에 유용합니다.

먼저, 이미지를 빌드하기 위한 간단한 Dockerfile 을 만들어 보겠습니다. ~/project 디렉토리에서 다음 내용으로 Dockerfile이라는 파일을 만듭니다.

FROM alpine:latest
RUN echo "Hello, Docker!" > /app/message.txt
CMD cat /app/message.txt

이 Dockerfile 은 alpine 기본 이미지를 사용하고, "Hello, Docker!" 내용으로 message.txt라는 파일을 추가하며, 컨테이너가 실행될 때 이 파일의 내용을 인쇄하도록 명령을 설정합니다.

이제 docker build 명령을 사용하여 Docker 이미지를 빌드합니다. my-recent-image로 태그를 지정합니다.

docker build -t my-recent-image .

명령 끝의 .은 Dockerfile 이 현재 디렉토리 (~/project) 에 있음을 나타냅니다. 빌드 프로세스를 보여주는 출력을 볼 수 있습니다.

빌드가 완료되면 docker images를 사용하여 이미지를 나열할 수 있습니다.

docker images

이전 단계의 hello-world 이미지 및 alpine 기본 이미지와 함께 my-recent-image가 나열되는 것을 볼 수 있습니다. 가장 최근에 빌드된 이미지는 일반적으로 목록 상단에 나타나거나 가장 최근 생성 시간을 갖습니다.

가장 최근에 빌드된 이미지에 대한 간략한 개요를 얻으려면 docker imagesheadawk와 같은 명령줄 도구와 결합하여 나열된 첫 번째 이미지의 이미지 ID 를 추출할 수 있습니다 (일반적으로 가장 최근). 그런 다음 해당 ID 로 docker inspect를 사용할 수 있습니다.

docker inspect $(docker images -q | head -n 1)

이 명령을 분석해 보겠습니다.

  • docker images -q: 이미지 ID 만 나열합니다.
  • head -n 1: 출력의 첫 번째 줄을 가져오며, 이는 가장 최근 이미지의 ID 입니다.
  • $(...): 이는 명령 치환으로, 괄호 안의 명령을 실행하고 해당 출력을 외부 명령에 대체합니다.
  • docker inspect ...: 명령 치환에서 얻은 ID 로 이미지를 검사합니다.

이렇게 하면 가장 최근에 빌드된 이미지에 대한 자세한 JSON 정보가 출력됩니다. 이전 단계와 유사하게, 필요에 따라 출력을 형식화하기 위해 docker inspect와 함께 -f 플래그를 다시 사용할 수 있습니다.

예를 들어, 가장 최근 이미지의 ID 와 생성 날짜를 보려면 다음을 수행합니다.

docker inspect -f '{{.Id}} {{.Created}}' $(docker images -q | head -n 1)

이렇게 하면 방금 빌드한 이미지에 대한 주요 정보를 빠르게 얻을 수 있습니다.

SPDX 파일에서 간략한 개요 얻기

이 단계에서는 SPDX (Software Package Data Exchange) 파일을 생성하고 검사하여 Docker 이미지 내의 소프트웨어 구성 요소에 대한 간략한 개요를 얻는 방법을 배우게 됩니다. SPDX 는 구성 요소, 라이선스 및 저작권을 포함한 소프트웨어 자재 명세서 (SBOM) 정보를 전달하기 위한 개방형 표준입니다.

Docker 이미지에 대한 SPDX 파일을 생성하려면 이미지 레이어를 분석하고 필요한 정보를 추출할 수 있는 도구가 필요합니다. 이러한 도구 중 하나는 컨테이너 이미지 및 파일 시스템에서 SBOM 을 생성하기 위한 명령줄 도구인 syft입니다.

syft는 미리 설치되어 있지 않으므로 다운로드하여 설치합니다. Linux 용 최신 릴리스를 다운로드합니다.

curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sudo bash -s -- -b /usr/local/bin

이 명령은 syft 설치 스크립트를 다운로드하고 sudo로 실행하여 바이너리를 /usr/local/bin에 설치합니다. 암호를 묻는 메시지가 표시될 수 있지만 labex 사용자는 암호 없는 sudo를 가지고 있습니다.

설치 후, 버전을 확인하여 syft가 설치되었는지 확인할 수 있습니다.

syft version

syft에 대한 버전 정보를 볼 수 있습니다.

이제 이전 단계에서 빌드한 my-recent-image에 대한 SPDX 파일을 생성해 보겠습니다. 결과를 ~/project 디렉토리의 my-recent-image.spdx.json이라는 파일로 출력합니다.

syft my-recent-image -o spdx-json > ~/project/my-recent-image.spdx.json

이 명령은 syft에게 my-recent-image를 분석하고 결과를 SPDX JSON 형식으로 출력하도록 지시하며, 출력을 지정된 파일로 리디렉션합니다. 이 프로세스는 이미지 크기에 따라 잠시 시간이 걸릴 수 있습니다.

명령이 완료되면 이미지 내에서 발견된 소프트웨어 패키지의 자세한 인벤토리를 포함하는 SPDX JSON 파일이 생성됩니다. nano와 같은 텍스트 편집기를 사용하여 이 파일의 내용을 볼 수 있습니다.

nano ~/project/my-recent-image.spdx.json

파일 내부에서 이미지 자체에 대한 정보와 감지된 패키지 목록 (이름, 버전 및 라이선스 포함) 을 찾을 수 있습니다. 이는 컨테이너를 실행하거나 개별 레이어를 수동으로 검사할 필요 없이 이미지에 있는 소프트웨어 구성 요소에 대한 간략한 개요를 제공합니다.

파일을 스크롤하여 다른 섹션과 포함된 정보를 볼 수 있습니다. 감지된 소프트웨어 구성 요소를 나열하는 packages 배열을 찾습니다.

Ctrl + X를 눌러 nano를 종료합니다.

요약

이 Lab 에서는 docker inspect 명령을 사용하여 Docker 이미지에 대한 간략한 개요를 얻는 방법을 배웠습니다. hello-world 이미지를 pull 하고 docker inspect를 사용하여 JSON 형식으로 자세한 정보를 확인하여 특정 이미지를 검사하는 연습을 했습니다. 또한 -f 플래그를 docker inspect 및 Go 템플릿과 함께 사용하여 이미지 ID 및 생성 날짜와 같은 특정 필드를 추출하고 형식화하는 방법을 배워 맞춤형 간략한 개요를 얻을 수 있었습니다.

또한, 활발한 개발 주기 동안 특히 유용한 가장 최근에 빌드된 Docker 이미지를 식별하고 검사하는 방법을 탐구했습니다. 여기에는 이미지를 나열하고 검사를 위해 최신 이미지를 찾기 위해 필터링하거나 정렬하는 방법을 이해하는 것이 포함되었습니다.