GitLab 컨테이너 레지스트리

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated

GitLab 프로젝트별로 컨테이너 이미지를 저장하기 위해 통합된 컨테이너 레지스트리를 사용할 수 있습니다.

GitLab 인스턴스에 대한 컨테이너 레지스트리를 활성화하려면 관리자 문서를 참조하세요.

note
Docker Hub에서 컨테이너 이미지를 끌어오는 경우, GitLab Dependency Proxy를 사용하여 비율 제한을 피하고 파이프라인 속도를 높일 수 있습니다.

컨테이너 레지스트리 보기

프로젝트나 그룹의 컨테이너 레지스트리를 볼 수 있습니다.

  1. 왼쪽 사이드바에서 검색 또는 이동하기를 선택하고 프로젝트 또는 그룹을 찾습니다.
  2. 배포 > 컨테이너 레지스트리를 선택합니다.

컨테이너 이미지를 검색하고, 정렬하고, 필터링하고, 삭제할 수 있습니다. 브라우저에서 URL을 복사하여 필터링된 보기를 공유할 수 있습니다.

컨테이너 레지스트리에서 특정 컨테이너 이미지의 태그 보기

주어진 컨테이너 이미지와 관련된 태그 목록을 보려면 컨테이너 레지스트리 태그 세부정보 페이지를 사용할 수 있습니다:

  1. 왼쪽 사이드바에서 검색 또는 이동하기를 선택하고 프로젝트 또는 그룹을 찾습니다.
  2. 배포 > 컨테이너 레지스트리를 선택합니다.
  3. 원하는 컨테이너 이미지를 선택합니다.

각 태그에 대한 세부정보를 볼 수 있으며, 게시된 날짜, 사용 중인 저장소 양, 매니페스트 및 구성 다이제스트 등을 확인할 수 있습니다.

이 페이지에서 태그를 검색하고, 정렬(태그 이름별로)하고, 삭제할 수 있습니다. 브라우저에서 URL을 복사하여 필터링된 보기를 공유할 수 있습니다.

컨테이너 레지스트리에서 컨테이너 이미지 사용

컨테이너 레지스트리에 호스팅된 컨테이너 이미지를 다운로드하고 실행하려면:

  1. 왼쪽 사이드바에서 검색 또는 이동하기를 선택하고 프로젝트 또는 그룹을 찾습니다.
  2. 배포 > 컨테이너 레지스트리를 선택합니다.
  3. 작업할 컨테이너 이미지를 찾아 이미지 경로 복사를 선택합니다. (

  4. 복사한 링크를 사용하여 docker run을 실행합니다:

    docker run [options] registry.example.com/group/project/image [arguments]  
    
note
비공식 repository에서 컨테이너 이미지를 다운로드하려면 컨테이너 레지스트리 인증해야 합니다.

컨테이너 이미지를 실행하는 데 대한 더 많은 정보는 Docker 문서를 참조하십시오.

컨테이너 이미지의 명명 규칙

컨테이너 이미지는 다음 명명 규칙을 따라야 합니다:

<registry server>/<namespace>/<project>[/<optional path>]  

예를 들어, 프로젝트가 gitlab.example.com/mynamespace/myproject인 경우, 컨테이너 이미지의 이름은 gitlab.example.com/mynamespace/myproject여야 합니다.

컨테이너 이미지 이름의 끝에 추가 이름을 최대 두 수준 깊게 추가할 수 있습니다.

예를 들어, 다음은 myproject라는 프로젝트의 컨테이너 이미지에 대한 유효한 이름입니다:

registry.example.com/mynamespace/myproject:some-tag  
registry.example.com/mynamespace/myproject/image:latest  
registry.example.com/mynamespace/myproject/my/image:rc1  

컨테이너 레지스트리 리포지토리 이동 또는 이름 변경

컨테이너 리포지토리의 경로는 항상 관련 프로젝트의 리포지토리 경로와 일치하므로, 컨테이너 레지스트리만 이름을 변경하거나 이동할 수 없습니다. 대신, 전체 프로젝트를 이름 변경하거나 이동할 수 있습니다.

컨테이너 리포지토리가 채워진 프로젝트의 이름 변경은 GitLab.com에서만 지원됩니다.

자체 관리 인스턴스에서는 그룹이나 프로젝트를 이동하거나 이름을 변경하기 전에 모든 컨테이너 이미지를 삭제할 수 있습니다. 또는, 이슈 18383에는 이 제한을 우회하는 커뮤니티 제안이 포함되어 있습니다. 에픽 9459는 컨테이너 리포지토리를 가진 프로젝트와 그룹을 자체 관리 GitLab으로 이동하는 지원 추가를 제안합니다.

프로젝트에 대한 컨테이너 레지스트리 비활성화

컨테이너 레지스트리는 기본적으로 활성화되어 있습니다.

그러나 프로젝트에 대한 컨테이너 레지스트리를 제거할 수 있습니다:

  1. 왼쪽 사이드바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. Settings > General을 선택합니다.
  3. Visibility, project features, permissions 섹션을 확장하고 Container registry를 비활성화합니다.
  4. Save changes를 선택합니다.

프로젝트의 사이드바에서 Deploy > Container Registry 항목이 제거됩니다.

컨테이너 레지스트리 가시성 변경

기본적으로 컨테이너 레지스트리는 프로젝트에 접근할 수 있는 모든 사용자에게 표시됩니다.

그러나 프로젝트에 대한 컨테이너 레지스트리의 가시성을 변경할 수 있습니다.

이 설정이 사용자에게 부여하는 권한에 대한 자세한 내용은 컨테이너 레지스트리 가시성 권한을 참조하세요.

  1. 왼쪽 사이드바에서 Search or go to를 선택하고 프로젝트를 찾습니다.
  2. Settings > General을 선택합니다.
  3. Visibility, project features, permissions 섹션을 확장합니다.
  4. Container registry 아래에서 드롭다운 목록에서 옵션을 선택합니다:

    • Everyone With Access (기본값): 컨테이너 레지스트리는 프로젝트에 접근할 수 있는 모든 사용자에게 표시됩니다. 프로젝트가 공개인 경우, 컨테이너 레지스트리도 공개입니다. 프로젝트가 내부 또는 비공식인 경우, 컨테이너 레지스트리도 내부 또는 비공식입니다.

    • Only Project Members: 컨테이너 레지스트리는 최소 Reporter 역할을 가진 프로젝트 구성원에게만 표시됩니다. 이 가시성은 Container Registry 가시성이 Everyone With Access로 설정된 비공식 프로젝트의 동작과 유사합니다.

  5. Save changes를 선택합니다.

컨테이너 레지스트리 가시성 권한

컨테이너 레지스트리를 보고 컨테이너 이미지를 가져오는 능력은 컨테이너 레지스트리의 가시성 권한에 의해 제어됩니다. UI의 가시성 설정 또는 API를 통해 가시성을 변경할 수 있습니다.

기타 권한 예를 들어, 컨테이너 레지스트리 업데이트 및 컨테이너 이미지를 푸시하거나 삭제하는 것은 이 설정의 영향을 받지 않습니다. 그러나 컨테이너 레지스트리를 비활성화하면 모든 컨테이너 레지스트리 작업이 비활성화됩니다.

    익명
(인터넷의 모든 사용자)
게스트 Reporter, Developer, Maintainer, Owner
컨테이너 레지스트리 가시성이
Everyone With Access로 설정된 공개 프로젝트
(UI) 또는 enabled (API)
컨테이너 레지스트리 보기
및 이미지 가져오기
컨테이너 레지스트리 가시성이
Only Project Members로 설정된 공개 프로젝트
(UI) 또는 private (API)
컨테이너 레지스트리 보기
및 이미지 가져오기
아니요 아니요
컨테이너 레지스트리 가시성이
Everyone With Access로 설정된 내부 프로젝트
(UI) 또는 enabled (API)
컨테이너 레지스트리 보기
및 이미지 가져오기
아니요
컨테이너 레지스트리 가시성이
Only Project Members로 설정된 내부 프로젝트
(UI) 또는 private (API)
컨테이너 레지스트리 보기
및 이미지 가져오기
아니요 아니요
컨테이너 레지스트리 가시성이
Everyone With Access로 설정된 비공식 프로젝트
(UI) 또는 enabled (API)
컨테이너 레지스트리 보기
및 이미지 가져오기
아니요 아니요
컨테이너 레지스트리 가시성이
Only Project Members로 설정된 비공식 프로젝트
(UI) 또는 private (API)
컨테이너 레지스트리 보기
및 이미지 가져오기
아니요 아니요
컨테이너 레지스트리가 비활성화된 모든 프로젝트 컨테이너 레지스트리에 대한 모든 작업 아니요 아니요 아니요

지원되는 이미지 유형

컨테이너 레지스트리는 Docker V2Open Container Initiative (OCI) 이미지 형식을 지원합니다. 또한, 컨테이너 레지스트리는 OCI 배포 사양에 준수합니다.

OCI 지원을 통해 Helm 3+ 차트 패키지와 같은 OCI 기반 이미지 형식을 레지스트리에 호스팅할 수 있습니다. GitLab API와 UI에서 이미지 형식 간의 구분이 없습니다. 이슈 38047는 Helm을 시작으로 이 구분을 다룹니다.

컨테이너 이미지 서명

GitLab 컨테이너 레지스트리에서는 OCI 1.1 manifest subject 필드를 사용하여 컨테이너 이미지를 Cosign 서명과 연관시킬 수 있습니다. 그런 다음 해당 서명의 태그를 검색하지 않고도 관련된 컨테이너 이미지와 함께 서명 정보를 볼 수 있습니다.

컨테이너 이미지의 태그 보기 시, 각 태그 옆에 서명이 연결된 아이콘이 표시됩니다. 서명의 세부 정보를 보려면 아이콘을 선택하세요.

필수 조건:

OCI 참조자 데이터로 컨테이너 이미지 서명

Cosign을 사용하여 서명에 참조자 데이터를 추가하려면 다음을 수행해야 합니다:

  • COSIGN_EXPERIMENTAL 환경 변수를 1로 설정합니다.
  • 서명 명령에 --registry-referrers-mode oci-1-1를 추가합니다.

예를 들면:

COSIGN_EXPERIMENTAL=1 cosign sign --registry-referrers-mode oci-1-1 <container image>

참고:

GitLab 컨테이너 레지스트리는 OCI 1.1 manifest subject 필드를 지원하지만, OCI 1.1 Referrers API를 완전히 구현하지 않습니다.