컨테이너 레지스트리에서 컨테이너 이미지 삭제
컨테이너 레지스트리에서 컨테이너 이미지를 삭제할 수 있습니다.
가비지 수집
Self-Managed형 인스턴스에서 컨테이너 이미지를 삭제해도 저장 공간이 해제되지 않고 이미지의 삭제가 가능하다고만 표시됩니다. 실제로 참조되지 않는 컨테이너 이미지를 삭제하고 저장 공간을 회수하려면 관리자가 가비지 수집을 실행해야 합니다.
GitLab.com에서는 컨테이너 레지스트리의 최신 버전에 자동 온라인 가비지 수집기가 포함되어 있습니다. 자세한 정보는 블로그 게시물을 참조하세요. 새 버전의 컨테이너 레지스트리에서 참조되지 않은 경우 24시간 후에 자동으로 삭제될 대상은 다음과 같습니다.
- 이미지 매니페스트에서 참조되지 않는 레이어.
- 태그가 없고 다른 매니페스트에서 참조되지 않는 이미지 매니페스트(다중 아키텍처 이미지와 같은).
온라인 가비지 수집기는 인스턴스 전체 기능이며 모든 네임스페이스에 적용됩니다.
GitLab UI 사용
GitLab UI를 사용하여 컨테이너 이미지를 삭제하려면 다음 단계를 수행하세요:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트 또는 그룹을 찾습니다.
- 다음 중 하나에 대해:
- 그룹인 경우, 운영 > 컨테이너 레지스트리를 선택합니다.
- 프로젝트인 경우, 배포 > 컨테이너 레지스트리를 선택합니다.
-
컨테이너 레지스트리 페이지에서 원하는 대로 삭제할 항목을 선택합니다.
- 빨간색 Trash 아이콘을 선택하여 전체 리포지터리 및 해당 태그를 모두 삭제합니다.
- 리포지터리로 이동하여 특정 태그를 개별적으로 또는 대량으로 삭제합니다.
- 대화 상자에서 태그 삭제를 선택합니다.
GitLab API 사용
API를 사용하여 컨테이너 이미지를 자동으로 삭제할 수 있습니다. 자세한 정보는 다음 엔드포인트를 참조하세요:
GitLab CI/CD 사용
다음 예제에서는 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
only:
- branches
except:
- main
delete_image:
before_script:
- curl --fail --show-error --location "https://github.com/genuinetools/reg/releases/download/v$REG_VERSION/reg-linux-amd64" --output ./reg
- echo "$REG_SHA256 ./reg" | sha256sum -c -
- chmod a+x ./reg
image: curlimages/curl:7.86.0
script:
- ./reg rm -d --auth-url $CI_REGISTRY -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $IMAGE_TAG
stage: clean
variables:
IMAGE_TAG: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
REG_SHA256: ade837fc5224acd8c34732bf54a94f579b47851cc6a7fd5899a98386b782e228
REG_VERSION: 0.16.1
only:
- branches
except:
- main
reg
릴리스를 릴리스 페이지에서 다운로드한 다음 delete_image
작업에서 정의된 REG_SHA256
및 REG_VERSION
변수를 변경하여 코드 예제를 업데이트할 수 있습니다.정리 정책 사용
프로젝트별로 정리 정책을 만들어서 컨테이너 레지스트리에서 이전 태그 및 이미지가 정기적으로 삭제되도록 할 수 있습니다.