GitLab 컨테이너 레지스트리

Tier: Free, Premium, Ultimate Offering: GitLab.com, Self-Managed, GitLab 전용

- 이미지 저장소 이름으로 검색하는 기능은 GitLab 13.0에 도입되었습니다.

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

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

note
도커 허브에서 도커 컨테이너 이미지를 가져오는 경우, 레이트 리밋을 피하고 파이프라인을 가속화하기 위해 GitLab Dependency Proxy를 사용할 수 있습니다. 도커 레지스트리에 대한 자세한 정보는 설명서를 참조하세요.

컨테이너 레지스트리 보기

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

  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. 변경 사항 저장을 선택합니다.

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

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

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

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

  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된 모든 프로젝트 컨테이너 레지스트리의 모든 작업 아니요 아니요 아니요

지원되는 이미지 유형

  • OCI 적합성은 GitLab 16.6에서 도입되었습니다.

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

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