컨테이너 레지스트리에서 컨테이너 이미지 삭제
컨테이너 레지스트리에서 컨테이너 이미지를 삭제할 수 있습니다.
특정 기준에 따라 컨테이너 이미지를 자동으로 삭제하려면 garbage collection을 사용하세요.
또는 3rd-party 도구를 사용하여 CI/CD 작업 생성할 수 있습니다
특정 프로젝트에서 컨테이너 이미지를 삭제하는 데 사용할 수 있습니다.
프로젝트 또는 그룹에서 특정 컨테이너 이미지를 삭제하려면 GitLab UI
또는 GitLab API를 사용할 수 있습니다.
삭제된 컨테이너 이미지를 복원하려면 다시 빌드하고 다시 업로드해야 합니다.
Garbage collection
셀프 관리 인스턴스에서 컨테이너 이미지를 삭제해도 저장 공간이 해제되지 않습니다.
이미지를 삭제 가능으로 표시할 뿐입니다.
실제로 참조되지 않는 컨테이너 이미지를 삭제하고 저장 공간을 복구하려면
셀프 관리 인스턴스 관리자가 garbage collection을 실행해야 합니다.
GitLab.com의 컨테이너 레지스트리에는 자동 온라인 쓰레기 수거기가 포함되어 있습니다.
자동 쓰레기 수거기를 사용하면 다음이 참조되지 않을 경우 24시간 후에 자동으로 삭제가 예약됩니다:
- 어떤 이미지 매니페스트에서도 참조되지 않는 레이어.
- 태그가 없고 다른 매니페스트(예: 다중 아키텍처 이미지)에서 참조되지 않는 이미지 매니페스트.
온라인 쓰레기 수거기는 인스턴스 전체 기능이며 모든 네임스페이스에 적용됩니다.
GitLab UI 사용
GitLab UI를 사용하여 컨테이너 이미지를 삭제하려면:
- 왼쪽 사이드바에서 Search or go to를 선택하고 프로젝트 또는 그룹을 찾습니다.
- 다음에 대해:
- 그룹의 경우, Operate > Container Registry를 선택합니다.
- 프로젝트의 경우, Deploy > Container Registry를 선택합니다.
-
Container Registry 페이지에서 삭제할 항목을 선택할 수 있습니다.
- 빨간 휴지통 아이콘을 선택하여 전체 리포지토리와 그 안의 모든 태그를 삭제합니다.
- 리포지토리로 이동하여 삭제하려는 태그 옆의 빨간 휴지통 아이콘을 선택하여 개별적으로 또는 일괄 삭제합니다.
- 대화 상자에서 Remove tag를 선택합니다.
GitLab API 사용
API를 사용하여 컨테이너 이미지 삭제 프로세스를 자동화할 수 있습니다.
자세한 내용은 다음 엔드포인트를 참조하세요:
GitLab CI/CD 사용
이 예시는 GitLab Registry API와 통신하는
regctl
이라는 3rd-party 도구를 사용합니다.이 3rd-party 도구에 대한 지원은 regclient의 이슈 큐를 참조하세요.
다음 예시는 두 개의 단계를 정의합니다: build
및 clean
.
build_image
작업은 브랜치를 위한 컨테이너 이미지를 빌드하고, delete_image
작업은 이를 삭제합니다.
reg
실행 파일은 다운로드되어 $CI_PROJECT_PATH:$CI_COMMIT_REF_SLUG
미리 정의된 CI/CD 변수를 일치시키도록 사용됩니다.
이 예시를 사용하려면 IMAGE_TAG
변수를 필요에 맞게 변경하세요.
stages:
- build
- clean
build_image:
image: docker:20.10.16
stage: build
services:
- docker:20.10.16-dind
variables:
IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build -t $IMAGE_TAG .
- docker push $IMAGE_TAG
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
when: never
- if: $CI_COMMIT_BRANCH
delete_image:
stage: clean
variables:
IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
REGCTL_VERSION: v0.6.1
rules:
- if: $CI_COMMIT_REF_NAME != $CI_DEFAULT_BRANCH
image: alpine:latest
script:
- apk update
- apk add curl
- curl --fail-with-body --location "https://github.com/regclient/regclient/releases/download/${REGCTL_VERSION}/regctl-linux-amd64" > /usr/bin/regctl
- chmod 755 /usr/bin/regctl
- regctl registry login ${CI_REGISTRY} -u ${CI_REGISTRY_USER} -p ${CI_REGISTRY_PASSWORD}
- regctl tag rm $IMAGE
정리 정책 사용
프로젝트별 정리 정책을 생성하여 오래된 태그와 이미지를 정기적으로 컨테이너 레지스트리에서 제거하도록 할 수 있습니다.