docker manifest rm 명령으로 매니페스트 목록 삭제 방법

DockerBeginner
지금 연습하기

소개

이 랩에서는 멀티 아키텍처 이미지를 생성하는 데 필수적인 Docker 매니페스트 목록을 관리하는 방법을 배우게 됩니다. 서로 다른 플랫폼의 이미지를 결합하여 매니페스트 목록을 생성하는 과정, docker manifest inspect 명령을 사용하여 해당 목록의 존재를 확인하는 방법, 그리고 마지막으로 docker manifest rm 명령을 사용하여 매니페스트 목록을 삭제하는 방법을 다룰 것입니다. 이 실습을 통해 Docker 워크플로우 내에서 매니페스트 목록을 처리하는 실질적인 경험을 얻을 수 있습니다.

매니페스트 목록 생성

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

먼저, 매니페스트 목록을 생성하는 데 사용할 두 개의 서로 다른 이미지를 가져와 보겠습니다. amd64arm64 아키텍처에 대해 alpine 이미지를 사용합니다.

docker pull alpine:latest
docker pull --platform arm64 alpine:latest

첫 번째 명령은 현재 아키텍처 (아마도 amd64) 에 대한 alpine:latest 이미지를 가져옵니다. 두 번째 명령은 arm64 아키텍처에 대한 alpine:latest 이미지를 명시적으로 가져옵니다.

이제 docker manifest create 명령을 사용하여 매니페스트 목록을 생성할 수 있습니다. 구문은 docker manifest create TARGET_IMAGE SOURCE_IMAGE [SOURCE_IMAGE...]입니다. amd64arm64에 대한 alpine:latest 이미지를 포함하는 my-alpine:latest라는 매니페스트 목록을 생성합니다.

docker manifest create my-alpine:latest alpine:latest alpine:latest --amend alpine:latest --platform arm64

이 명령에서:

  • my-alpine:latest는 우리가 생성하는 새 매니페스트 목록의 이름입니다.
  • alpine:latest는 첫 번째 소스 이미지입니다 (기본 아키텍처용).
  • --amend alpine:latest --platform arm64arm64 플랫폼용 alpine:latest 이미지를 매니페스트 목록에 추가합니다.

이 명령을 실행한 후, 로컬에 매니페스트 목록이 생성됩니다. 하지만 아직 레지스트리에 푸시되지 않았습니다. 나중에 단계에서 푸시할 것입니다.

매니페스트 목록 존재 확인

이전 단계에서 my-alpine:latest라는 매니페스트 목록을 생성했습니다. 이제 이 매니페스트 목록이 성공적으로 생성되었고 로컬에 존재하는지 확인하겠습니다.

docker manifest inspect 명령을 사용하여 매니페스트 목록의 세부 정보를 볼 수 있습니다. 이 명령은 매니페스트 목록이 존재할 경우 JSON 형식으로 내용을 출력합니다.

docker manifest inspect my-alpine:latest

my-alpine:latest 매니페스트 목록이 성공적으로 생성되었다면, 다양한 아키텍처에 대해 참조하는 서로 다른 이미지를 포함하여 매니페스트 목록을 설명하는 JSON 출력을 볼 수 있습니다. 매니페스트 목록이 존재하지 않으면 명령은 오류를 반환합니다.

출력에는 스키마 버전, 미디어 유형 및 포함된 각 아키텍처에 대한 매니페스트 목록과 같은 매니페스트 목록에 대한 정보가 표시됩니다. amd64arm64 아키텍처 모두에 대한 항목이 표시되어야 하며, 이는 해당 플랫폼의 이미지에 대한 참조와 함께 매니페스트 목록이 올바르게 생성되었음을 확인합니다.

매니페스트 목록 삭제

이전 단계에서 my-alpine:latest라는 매니페스트 목록을 생성하고 존재 여부를 확인했습니다. 이제 이 매니페스트 목록을 삭제하는 방법을 배우겠습니다.

매니페스트 목록을 삭제하려면 docker manifest rm 명령을 사용하고 그 뒤에 매니페스트 목록의 이름을 입력합니다.

docker manifest rm my-alpine:latest

이 명령은 my-alpine:latest 매니페스트 목록에 대한 로컬 참조를 제거합니다. 이 명령은 매니페스트 목록 자체만 제거하며, 매니페스트 목록이 참조하는 개별 이미지는 제거하지 않습니다. 이전에 가져온 amd64arm64alpine:latest 이미지는 시스템에 그대로 남아 있습니다.

명령을 실행한 후, 매니페스트 목록이 태그 해제되었음을 나타내는 출력을 볼 수 있습니다.

매니페스트 목록 삭제 확인

이전 단계에서 my-alpine:latest라는 매니페스트 목록을 삭제했습니다. 이제 매니페스트 목록이 성공적으로 삭제되었고 더 이상 로컬에 존재하지 않는지 확인하겠습니다.

docker manifest inspect 명령을 사용하여 매니페스트 목록을 다시 검사해 볼 수 있습니다. 매니페스트 목록이 성공적으로 삭제된 경우, 이 명령은 매니페스트 목록을 찾을 수 없다는 오류를 반환해야 합니다.

docker manifest inspect my-alpine:latest

매니페스트 목록을 삭제한 후 이 명령을 실행하면 no such manifest: docker.io/library/my-alpine:latest와 유사한 오류 메시지가 표시됩니다. 이는 매니페스트 목록이 로컬 Docker 환경에서 제거되었음을 확인합니다.

요약

이 랩에서는 Docker 매니페스트 목록을 생성하고 관리하는 방법을 배웠습니다. 먼저 서로 다른 아키텍처에 대한 이미지를 가져온 다음, docker manifest create 명령을 사용하여 이를 단일 매니페스트 목록으로 결합하여 멀티 아키텍처 이미지 구축 방법을 시연했습니다.

생성 후, docker manifest inspect 명령을 사용하여 매니페스트 목록의 존재 여부를 확인했습니다. 마지막으로, docker manifest rm 명령을 사용하여 매니페스트 목록을 삭제하는 방법을 배우고 제거를 확인하여 Docker 에서 매니페스트 목록의 필수적인 라이프사이클 관리를 다루었습니다.