GitLab 컨테이너 레지스트리

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-managed, GitLab Dedicated
  • 이미지 리포지터리 이름으로 검색이 GitLab 13.0에서 도입되었습니다.

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

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

note
Docker Hub에서 Docker 컨테이너 이미지를 가져오는 경우 GitLab Dependency Proxy를 사용하여 레이트 제한을 피하고 파이프라인을 가속화할 수 있습니다. Docker 레지스트리에 대한 자세한 정보는 문서를 참조하세요.

컨테이너 레지스트리 보기

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

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

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

비공개 프로젝트의 경우 프로젝트 또는 그룹의 구성원만 컨테이너 레지스트리에 액세스할 수 있습니다. 비공개 레지스트리에서 다운로드한 컨테이너 이미지는 인스턴스 러너의 다른 사용자가 사용할 수 있습니다.

프로젝트가 공개되면 컨테이너 레지스트리도 공개됩니다.

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

컨테이너 레지스트리 태그 상세정보 페이지를 사용하여 특정 컨테이너 이미지와 관련된 태그 디렉터리을 볼 수 있습니다:

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

발행된 날짜, 사용 스토리지 양, 매니페스트 및 구성 다이제스트와 같은 각 태그에 대한 세부 정보를 볼 수 있습니다.

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

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

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

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

    컨테이너 레지스트리 이미지 URL

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

    docker run [옵션] registry.example.com/group/project/image [인수]
    
note
개인 리포지터리에서 컨테이너 이미지를 다운로드하려면 컨테이너 레지스트리로 인증해야 합니다.

컨테이너 이미지 실행에 대한 자세한 정보는 Docker 문서를 참조하세요.

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

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

<레지스트리 서버>/<네임스페이스>/<프로젝트>[/<선택적 경로>]

예를 들어, 프로젝트가 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

컨테이너 레지스트리 리포지터리 이동 또는 이름 바꾸기

컨테이너 이미지를 푸시한 후에는 기존 컨테이너 레지스트리 리포지터리의 이동 또는 이름 바꾸기가 지원되지 않습니다. 컨테이너 이미지는 리포지터리 경로와 일치하는 경로에 저장됩니다. 따라서 컨테이너 레지스트리를 포함한 리포지터리를 이동하거나 이름을 바꾸려면 모든 기존 컨테이너 이미지를 삭제해야 합니다. 이 알려진 문제의 해결을 위한 커뮤니티 제안은 이슈 18383에서 공유되었습니다.

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

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

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

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. 가시성, 프로젝트 기능, 권한 섹션을 확장하고 컨테이너 레지스트리를 비활성화합니다.
  4. 변경 사항 저장을 선택합니다.

프로젝트의 사이드바에서 배포 > 컨테이너 레지스트리 항목이 제거됩니다.

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

  • GitLab 14.2에서 도입되었습니다.

기본적으로 컨테이너 레지스트리는 프로젝트에 액세스 권한이 있는 모든 사용자에게 표시됩니다. 그러나 컨테이너 레지스트리의 가시성을 변경할 수 있습니다.

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

  1. 왼쪽 사이드바에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
  2. 설정 > 일반을 선택합니다.
  3. 가시성, 프로젝트 기능, 권한 섹션을 확장합니다.
  4. 컨테이너 레지스트리 아래에서 드롭다운 디렉터리에서 옵션을 선택합니다:

    • 모든 사용자와 함께 사용: 프로젝트에 액세스 권한이 있는 모든 사용자에게 컨테이너 레지스트리가 표시됩니다. 프로젝트가 공개되면 컨테이너 레지스트리도 공개됩니다. 프로젝트가 내부 또는 비공개인 경우 컨테이너 레지스트리도 내부 또는 비공개됩니다.

    • 프로젝트 멤버만: 컨테이너 레지스트리는 적어도 리포터 역할 이상의 프로젝트 구성원만 볼 수 있습니다. 이 가시성은 컨테이너 레지스트리 가시성이 모든 사용자와 함께 사용로 설정된 비공개 프로젝트와 유사합니다.

  5. 변경 사항 저장을 선택합니다.

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

컨테이너 레지스트리 보기 및 컨테이너 이미지 다운로드 권한은 컨테이너 레지스트리의 가시성 권한으로 제어됩니다. 이 설정은 UI에서 설정 변경 또는 API를 통해 변경할 수 있습니다. 그 외의 권한(컨테이너 레지스트리 업데이트, 컨테이너 이미지 푸시 또는 삭제 등)은 이 설정에 영향을 받지 않습니다. 그러나 컨테이너 레지스트리를 비활성화하면 모든 컨테이너 레지스트리 작업이 비활성화됩니다.

    익명
(인터넷 상의 모든 사용자)
게스트 리포터, 개발자, 유지자, 소유자
컨테이너 레지스트리 가시성이 모든 사용자와 함께 사용(UI) 또는 enabled(API)로 설정된 공개 프로젝트 컨테이너 레지스트리 보기 및 이미지 다운로드
컨테이너 레지스트리 가시성이 프로젝트 멤버만(UI) 또는 private(API)로 설정된 공개 프로젝트 컨테이너 레지스트리 보기 및 이미지 다운로드 아니요 아니요
컨테이너 레지스트리 가시성이 모든 사용자와 함께 사용(UI) 또는 enabled(API)로 설정된 내부 프로젝트 컨테이너 레지스트리 보기 및 이미지 다운로드 아니요
컨테이너 레지스트리 가시성이 프로젝트 멤버만(UI) 또는 private(API)로 설정된 내부 프로젝트 컨테이너 레지스트리 보기 및 이미지 다운로드 아니요 아니요
컨테이너 레지스트리 가시성이 모든 사용자와 함께 사용(UI) 또는 enabled(API)로 설정된 비공개 프로젝트 컨테이너 레지스트리 보기 및 이미지 다운로드 아니요 아니요
컨테이너 레지스트리 가시성이 프로젝트 멤버만(UI) 또는 private(API)로 설정된 비공개 프로젝트 컨테이너 레지스트리 보기 및 이미지 다운로드 아니요 아니요
컨테이너 레지스트리가 disabled로 설정된 모든 프로젝트 컨테이너 레지스트리의 모든 작업 아니요 아니요 아니요

지원되는 이미지 유형

컨테이너 레지스트리는 Docker V2Open Container Initiative (OCI) 이미지 형식을 지원합니다. 게다가, 컨테이너 레지스트리는 OCI 분배 사양을 준수하고 있습니다.

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