docker manifest annotate 명령을 사용하여 플랫폼 정보 추가 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 docker manifest annotate 명령을 사용하여 Docker 매니페스트 목록에 플랫폼 정보를 추가하는 방법을 배우게 됩니다. 먼저, alpine 이미지의 서로 다른 아키텍처 버전을 포함하는 매니페스트 목록을 생성하는 것으로 시작합니다.

매니페스트 목록을 생성한 후, 목록 내의 개별 매니페스트에 아키텍처, 운영 체제, OS 기능, 버전 및 아키텍처 변형을 지정하기 위해 주석을 추가하는 연습을 할 것입니다. 마지막으로, 주석이 추가된 매니페스트 목록을 검사하여 추가된 플랫폼 정보를 확인합니다. 이 프로세스는 멀티 아키텍처 Docker 이미지를 효과적으로 빌드하고 배포하는 데 필수적입니다.

매니페스트 목록 생성

이 단계에서는 매니페스트 목록을 생성하는 방법을 배우겠습니다. 매니페스트 목록은 이미지 매니페스트의 인덱스로, 단일 이름으로 서로 다른 아키텍처 및 운영 체제에 대한 여러 이미지를 참조할 수 있도록 합니다. 이는 멀티 아키텍처 이미지를 배포하는 데 특히 유용합니다.

매니페스트 목록을 생성하기 전에, 몇 가지 이미지가 있어야 합니다. 이 랩에서는 서로 다른 아키텍처에 대해 alpine 이미지를 사용합니다. alpine 이미지의 amd64arm64 버전을 가져올 것입니다.

먼저, amd64 버전의 alpine 이미지를 가져옵니다.

docker pull alpine:latest

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

다음으로, arm64 버전의 alpine 이미지를 가져옵니다. 이 가져오기 (pull) 에 대해 플랫폼을 지정해야 합니다.

docker pull --platform arm64 alpine:latest

다시, 이미지가 가져와지는 것을 보여주는 출력을 보게 됩니다.

이제 이미지가 있으므로 매니페스트 목록을 생성할 수 있습니다. docker manifest create 명령을 사용합니다. 이 명령은 생성하려는 매니페스트 목록의 이름과 목록에 포함하려는 이미지의 이름을 차례로 받습니다.

alpine:latest (amd64) 및 alpine:latest (arm64) 이미지를 포함하는 my-alpine-list라는 매니페스트 목록을 생성해 보겠습니다.

docker manifest create my-alpine-list alpine:latest alpine:latest --amend --amend

--amend 플래그는 매니페스트 목록에 항목을 추가하거나 업데이트하는 데 사용됩니다. 여기서는 두 개의 이미지를 추가하므로 두 번 사용합니다.

이 명령을 실행한 후, 매니페스트 목록을 생성했습니다. 그러나 이 목록은 현재 로컬에만 저장됩니다. 다음 단계에서 레지스트리에 푸시할 것입니다.

아키텍처 및 OS 로 매니페스트 주석 추가

이 단계에서는 이전 단계에서 생성한 매니페스트 목록에 주석을 추가합니다. 매니페스트에 주석을 추가하면 이미지의 아키텍처 및 운영 체제와 같은 메타데이터를 추가할 수 있습니다. 이 정보는 컨테이너가 실행되는 환경에 따라 Docker 가 매니페스트 목록에서 올바른 이미지를 선택하는 데 매우 중요합니다.

docker manifest annotate 명령을 사용하여 my-alpine-list 매니페스트 목록의 항목에 아키텍처 및 OS 정보를 추가합니다. 이 명령은 매니페스트 목록 이름, 목록 내의 이미지 이름 및 주석 플래그를 사용합니다.

먼저, amd64 아키텍처 및 linux 운영 체제에 해당하는 alpine:latest 이미지에 주석을 추가해 보겠습니다.

docker manifest annotate my-alpine-list alpine:latest --arch amd64 --os linux

이 명령은 my-alpine-list 매니페스트의 alpine:latest 이미지가 amd64 아키텍처 및 linux 운영 체제용임을 Docker 에 알립니다.

다음으로, arm64 아키텍처 및 linux 운영 체제에 해당하는 alpine:latest 이미지에 주석을 추가합니다.

docker manifest annotate my-alpine-list alpine:latest --arch arm64 --os linux

이 명령은 목록의 다른 alpine:latest 이미지에 주석을 추가하여 arm64 아키텍처 및 linux 운영 체제용임을 지정합니다.

아키텍처 및 OS 정보로 매니페스트 목록에 주석을 추가함으로써, 사용자가 특정 아키텍처의 시스템에서 my-alpine-list를 가져올 때 Docker 가 자동으로 올바른 이미지를 선택할 수 있게 됩니다.

OS 기능 및 버전으로 매니페스트 주석 추가

이 단계에서는 OS 기능 및 버전에 대한 정보를 추가하여 매니페스트 목록에 계속 주석을 추가합니다. Alpine 과 같은 기본 이미지에서는 덜 일반적이지만, 이러한 주석은 특정 운영 체제 기능 또는 버전을 필요로 하는 이미지에 유용할 수 있습니다.

docker manifest annotate 명령을 사용하면 --os-features 플래그를 사용하여 OS 기능을 지정하고 --os-version 플래그를 사용하여 OS 버전을 지정할 수 있습니다.

예시를 위해, amd64 Alpine 이미지가 특정 OS 기능 (예: fips) 을 필요로 하고 특정 OS 버전 (예: 1.0) 에 대해 빌드되었다고 가정해 보겠습니다. my-alpine-list에서 amd64 항목에 이 정보를 주석으로 추가합니다.

docker manifest annotate my-alpine-list alpine:latest --arch amd64 --os linux --os-features fips --os-version 1.0

이 명령은 my-alpine-list에서 amd64 항목에 대한 주석을 업데이트하여 지정된 OS 기능 및 버전을 추가합니다.

마찬가지로, arm64 Alpine 이미지가 다른 OS 기능 (예: selinux) 을 필요로 하고 다른 OS 버전 (예: 2.0) 에 대해 빌드되었다고 가정해 보겠습니다. arm64 항목에 주석을 추가합니다.

docker manifest annotate my-alpine-list alpine:latest --arch arm64 --os linux --os-features selinux --os-version 2.0

이 명령은 arm64 항목에 대한 주석을 업데이트하여 특정 OS 기능 및 버전을 추가합니다.

이러한 주석을 추가하면 이미지의 요구 사항 및 호환성에 대한 보다 자세한 정보를 제공하여 Docker 또는 다른 도구가 매니페스트 목록에서 이미지를 선택할 때 사용할 수 있습니다.

아키텍처 변형 (variant) 으로 매니페스트 주석 추가

이 단계에서는 매니페스트 목록에 아키텍처 변형 정보를 추가합니다. 아키텍처 변형은 동일한 아키텍처의 서로 다른 버전 또는 구현을 구별하는 데 사용됩니다. 예를 들어, arm 아키텍처에는 v6, v7, v8과 같은 변형이 있습니다.

--variant 플래그와 함께 docker manifest annotate 명령을 사용하여 아키텍처 변형을 지정합니다.

arm64 Alpine 이미지가 arm64 아키텍처의 v8 변형을 위해 특별히 빌드되었다고 가정해 보겠습니다. my-alpine-list에서 arm64 항목에 이 정보를 주석으로 추가합니다.

docker manifest annotate my-alpine-list alpine:latest --arch arm64 --os linux --variant v8

이 명령은 my-alpine-list에서 arm64 항목에 대한 주석을 업데이트하여 v8 변형 정보를 추가합니다.

amd64 아키텍처의 경우 변형이 덜 일반적이지만, 필요한 경우 하나를 지정할 수 있습니다. 이 랩에서는 amd64 항목에 변형을 추가하지 않습니다.

아키텍처 변형 정보를 추가하면 이미지의 호환성에 대한 더욱 구체적인 세부 정보를 제공하여 Docker 가 주어진 시스템에 가장 적합한 이미지를 선택할 수 있습니다.

주석 처리된 매니페스트 목록 검사

이 마지막 단계에서는 생성하고 주석을 추가한 매니페스트 목록을 검사하여 추가한 정보를 확인합니다. docker manifest inspect 명령을 사용하면 매니페스트 목록에 포함된 매니페스트 및 해당 주석을 포함하여 매니페스트 목록의 세부 정보를 볼 수 있습니다.

my-alpine-list 매니페스트 목록을 검사하려면 다음 명령을 실행합니다.

docker manifest inspect my-alpine-list

이 명령은 매니페스트 목록을 나타내는 JSON 문서를 출력합니다. amd64arm64 이미지에 대한 항목과 이전 단계에서 추가한 주석 (예: architecture, os, os.features, os.version, variant) 을 모두 볼 수 있습니다.

출력에서 manifests 배열을 찾습니다. 이 배열 내의 각 객체는 매니페스트 목록에 포함된 이미지를 나타냅니다. 각 매니페스트 객체 내에서 platform 필드를 찾을 수 있으며, 여기에는 architecture, os, os.features, 및 os.version 정보가 포함되어 있습니다. arm64 항목의 경우 variant 필드도 표시됩니다.

매니페스트 목록을 검사하는 것은 주석이 올바르게 적용되었는지, 그리고 매니페스트 목록이 의도한 대로 구성되었는지 확인하는 좋은 방법입니다.

요약

이 랩에서는 여러 이미지 매니페스트의 색인 역할을 하여 단일 이름으로 다중 아키텍처 이미지 배포를 가능하게 하는 Docker 매니페스트 목록을 만드는 방법을 배웠습니다. 먼저 amd64arm64 아키텍처 모두에 대한 alpine 이미지를 가져오는 것으로 시작했습니다. 그 후, --amend 플래그와 함께 docker manifest create 명령을 사용하여 가져온 이미지를 통합하여 my-alpine-list라는 로컬 매니페스트 목록을 구축했습니다.

매니페스트 목록을 생성한 후, docker manifest annotate 명령을 사용하여 목록 내의 개별 매니페스트에 주석을 추가하는 방법을 살펴보았습니다. 이 프로세스에는 아키텍처 및 운영 체제 정보와 같은 중요한 메타데이터를 추가하는 작업이 포함되었습니다. 특히, 아키텍처 및 OS 세부 정보로 매니페스트에 주석을 추가하는 방법을 시연했으며, OS 기능, 버전 및 아키텍처 변형 정보를 추가하는 방법을 추가로 탐구했습니다. 마지막으로, 추가된 메타데이터를 확인하여 목록이 포함된 이미지의 특성을 정확하게 반영하는지 확인하기 위해 주석이 추가된 매니페스트 목록을 검사하는 방법을 배웠습니다.