InfoGrab Docs

GitLab 컨테이너 레지스트리 문제 해결

요약

GitLab 컨테이너 레지스트리의 대부분의 문제를 해결하려면 관리자 권한으로 GitLab에 로그인해야 합니다. GitLab 컨테이너 레지스트리 관리 문서에서 추가 문제 해결 정보를 찾을 수 있습니다. 컨테이너 이미지를 GitLab 레지스트리로 마이그레이션하는 것은 지원되지 않지만 에픽은 이 동작을 변경하는 것을 제안합니다.

GitLab 컨테이너 레지스트리의 대부분의 문제를 해결하려면 관리자 권한으로 GitLab에 로그인해야 합니다.

GitLab 컨테이너 레지스트리 관리 문서에서 추가 문제 해결 정보를 찾을 수 있습니다.

GitLab 컨테이너 레지스트리로 OCI 컨테이너 이미지 마이그레이션#

컨테이너 이미지를 GitLab 레지스트리로 마이그레이션하는 것은 지원되지 않지만 에픽은 이 동작을 변경하는 것을 제안합니다.

서드파티 도구를 사용하여 컨테이너 이미지를 마이그레이션할 수 있습니다. 예를 들어 skopeo는 다양한 스토리지 메커니즘 간에 컨테이너 이미지를 복사할 수 있습니다. skopeo를 사용하여 컨테이너 레지스트리, 컨테이너 스토리지 백엔드, 로컬 디렉토리 및 로컬 OCI 레이아웃 디렉토리에서 GitLab 컨테이너 레지스트리로 복사할 수 있습니다.

Docker 연결 오류#

그룹, 프로젝트 또는 브랜치 이름에 특수 문자가 있을 때 Docker 연결 오류가 발생할 수 있습니다. 특수 문자는 다음을 포함합니다:

  • 선행 밑줄.
  • 후행 하이픈 또는 대시.

이 오류를 해결하려면 그룹 경로, 프로젝트 경로 또는 브랜치 이름을 변경할 수 있습니다.

Docker Engine 17.11 이하를 사용하는 경우 404 Not Found 또는 Unknown Manifest 오류 메시지가 표시될 수 있습니다. 현재 버전의 Docker Engine은 v2 API를 사용합니다.

GitLab 컨테이너 레지스트리의 이미지는 Docker v2 API를 사용해야 합니다. 버전 1 이미지를 버전 2로 업데이트하는 방법에 대한 자세한 내용은 Docker 문서를 참조하세요.

매니페스트 목록 푸시 시 Blob unknown to registry 오류#

GitLab 컨테이너 레지스트리에 Docker 매니페스트 목록을 푸시할 때 manifest blob unknown: blob unknown to registry 오류가 발생할 수 있습니다. 이 오류는 동일한 저장소 대신 여러 저장소에 다른 아키텍처를 가진 여러 이미지가 있기 때문에 발생할 가능성이 높습니다.

예를 들어 각 아키텍처를 나타내는 두 개의 이미지가 있을 수 있습니다:

  • amd64 플랫폼.
  • arm64v8 플랫폼.

이 이미지를 사용하여 다중 아키텍처 이미지를 빌드하려면 다중 아키텍처 이미지와 동일한 저장소로 푸시해야 합니다.

Blob unknown to registry 오류를 해결하려면 개별 이미지의 태그 이름에 아키텍처를 포함합니다. 예를 들어 mygroup/myapp:1.0.0-amd64mygroup/myapp:1.0.0-arm64v8을 사용합니다. 그런 다음 매니페스트 목록에 mygroup/myapp:1.0.0으로 태그를 지정할 수 있습니다.

프로젝트 경로를 변경하거나 프로젝트를 전송할 수 없음#

프로젝트 경로를 변경하거나 프로젝트를 새 네임스페이스로 전송하려고 하면 다음 오류 중 하나가 발생할 수 있습니다:

  • 컨테이너 레지스트리에 태그가 있으므로 프로젝트를 전송할 수 없습니다.
  • 네임스페이스를 이동할 수 없습니다. 프로젝트 중 하나 이상이 컨테이너 레지스트리에 태그가 있습니다.

이 오류는 프로젝트의 컨테이너 레지스트리에 이미지가 있을 때 발생합니다. 경로를 변경하거나 프로젝트를 전송하기 전에 이러한 이미지를 삭제하거나 이동해야 합니다.

다음 절차에서는 이러한 샘플 프로젝트 이름을 사용합니다:

  • 현재 프로젝트의 경우: gitlab.example.com/org/build/sample_project/cr:v2.9.1.
  • 새 프로젝트의 경우: gitlab.example.com/new_org/build/new_sample_project/cr:v2.9.1.
  1. 컴퓨터에 Docker 이미지를 다운로드합니다:

    docker login gitlab.example.com
    docker pull gitlab.example.com/org/build/sample_project/cr:v2.9.1
    

    [!note] 사용자 계정을 인증하려면 개인 액세스 토큰 또는 배포 토큰을 사용하세요.

  2. 새 프로젝트 이름과 일치하도록 이미지 이름을 변경합니다:

    docker tag gitlab.example.com/org/build/sample_project/cr:v2.9.1 gitlab.example.com/new_org/build/new_sample_project/cr:v2.9.1
    
  3. UI 또는 API를 사용하여 이전 프로젝트의 이미지를 삭제합니다. 이미지가 대기열에 있고 삭제되는 동안 지연이 있을 수 있습니다.

  4. 경로를 변경하거나 프로젝트를 전송합니다:

    1. 상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
    2. 설정 > 일반을 선택합니다.
    3. 고급 섹션을 확장합니다.
    4. 경로 변경 텍스트 상자에서 경로를 편집합니다.
    5. 경로 변경을 선택합니다.
  5. 이미지를 복원합니다:

    docker push gitlab.example.com/new_org/build/new_sample_project/cr:v2.9.1
    

자세한 내용은 이 이슈를 참조하세요.

Failed to pull image 메시지#

CI/CD 작업 토큰 범위가 제한된 프로젝트에서 CI/CD 작업이 컨테이너 이미지를 가져올 수 없을 때 Failed to pull image 오류 메시지가 발생할 수 있습니다.

OCI manifest found, but accept header does not support OCI manifests 오류#

이미지를 가져올 수 없는 경우 레지스트리 로그에 다음과 유사한 오류가 있을 수 있습니다:

manifest unknown: OCI manifest found, but accept header does not support OCI manifests

이 오류는 클라이언트가 올바른 Accept: application/vnd.oci.image.manifest.v1+json 헤더를 제출하지 않을 때 발생합니다. Docker 클라이언트 버전이 최신 상태인지 확인하세요. 서드파티 도구를 사용하는 경우 OCI 매니페스트를 처리할 수 있는지 확인하세요.

GitLab 컨테이너 레지스트리 문제 해결

원문 보기
요약

GitLab 컨테이너 레지스트리의 대부분의 문제를 해결하려면 관리자 권한으로 GitLab에 로그인해야 합니다. GitLab 컨테이너 레지스트리 관리 문서에서 추가 문제 해결 정보를 찾을 수 있습니다. 컨테이너 이미지를 GitLab 레지스트리로 마이그레이션하는 것은 지원되지 않지만 에픽은 이 동작을 변경하는 것을 제안합니다.

GitLab 컨테이너 레지스트리의 대부분의 문제를 해결하려면 관리자 권한으로 GitLab에 로그인해야 합니다.

GitLab 컨테이너 레지스트리 관리 문서에서 추가 문제 해결 정보를 찾을 수 있습니다.

GitLab 컨테이너 레지스트리로 OCI 컨테이너 이미지 마이그레이션#

컨테이너 이미지를 GitLab 레지스트리로 마이그레이션하는 것은 지원되지 않지만 에픽은 이 동작을 변경하는 것을 제안합니다.

서드파티 도구를 사용하여 컨테이너 이미지를 마이그레이션할 수 있습니다. 예를 들어 skopeo는 다양한 스토리지 메커니즘 간에 컨테이너 이미지를 복사할 수 있습니다. skopeo를 사용하여 컨테이너 레지스트리, 컨테이너 스토리지 백엔드, 로컬 디렉토리 및 로컬 OCI 레이아웃 디렉토리에서 GitLab 컨테이너 레지스트리로 복사할 수 있습니다.

Docker 연결 오류#

그룹, 프로젝트 또는 브랜치 이름에 특수 문자가 있을 때 Docker 연결 오류가 발생할 수 있습니다. 특수 문자는 다음을 포함합니다:

  • 선행 밑줄.
  • 후행 하이픈 또는 대시.

이 오류를 해결하려면 그룹 경로, 프로젝트 경로 또는 브랜치 이름을 변경할 수 있습니다.

Docker Engine 17.11 이하를 사용하는 경우 404 Not Found 또는 Unknown Manifest 오류 메시지가 표시될 수 있습니다. 현재 버전의 Docker Engine은 v2 API를 사용합니다.

GitLab 컨테이너 레지스트리의 이미지는 Docker v2 API를 사용해야 합니다. 버전 1 이미지를 버전 2로 업데이트하는 방법에 대한 자세한 내용은 Docker 문서를 참조하세요.

매니페스트 목록 푸시 시 Blob unknown to registry 오류#

GitLab 컨테이너 레지스트리에 Docker 매니페스트 목록을 푸시할 때 manifest blob unknown: blob unknown to registry 오류가 발생할 수 있습니다. 이 오류는 동일한 저장소 대신 여러 저장소에 다른 아키텍처를 가진 여러 이미지가 있기 때문에 발생할 가능성이 높습니다.

예를 들어 각 아키텍처를 나타내는 두 개의 이미지가 있을 수 있습니다:

  • amd64 플랫폼.
  • arm64v8 플랫폼.

이 이미지를 사용하여 다중 아키텍처 이미지를 빌드하려면 다중 아키텍처 이미지와 동일한 저장소로 푸시해야 합니다.

Blob unknown to registry 오류를 해결하려면 개별 이미지의 태그 이름에 아키텍처를 포함합니다. 예를 들어 mygroup/myapp:1.0.0-amd64mygroup/myapp:1.0.0-arm64v8을 사용합니다. 그런 다음 매니페스트 목록에 mygroup/myapp:1.0.0으로 태그를 지정할 수 있습니다.

프로젝트 경로를 변경하거나 프로젝트를 전송할 수 없음#

프로젝트 경로를 변경하거나 프로젝트를 새 네임스페이스로 전송하려고 하면 다음 오류 중 하나가 발생할 수 있습니다:

  • 컨테이너 레지스트리에 태그가 있으므로 프로젝트를 전송할 수 없습니다.
  • 네임스페이스를 이동할 수 없습니다. 프로젝트 중 하나 이상이 컨테이너 레지스트리에 태그가 있습니다.

이 오류는 프로젝트의 컨테이너 레지스트리에 이미지가 있을 때 발생합니다. 경로를 변경하거나 프로젝트를 전송하기 전에 이러한 이미지를 삭제하거나 이동해야 합니다.

다음 절차에서는 이러한 샘플 프로젝트 이름을 사용합니다:

  • 현재 프로젝트의 경우: gitlab.example.com/org/build/sample_project/cr:v2.9.1.
  • 새 프로젝트의 경우: gitlab.example.com/new_org/build/new_sample_project/cr:v2.9.1.
  1. 컴퓨터에 Docker 이미지를 다운로드합니다:

    docker login gitlab.example.com
    docker pull gitlab.example.com/org/build/sample_project/cr:v2.9.1
    

    [!note] 사용자 계정을 인증하려면 개인 액세스 토큰 또는 배포 토큰을 사용하세요.

  2. 새 프로젝트 이름과 일치하도록 이미지 이름을 변경합니다:

    docker tag gitlab.example.com/org/build/sample_project/cr:v2.9.1 gitlab.example.com/new_org/build/new_sample_project/cr:v2.9.1
    
  3. UI 또는 API를 사용하여 이전 프로젝트의 이미지를 삭제합니다. 이미지가 대기열에 있고 삭제되는 동안 지연이 있을 수 있습니다.

  4. 경로를 변경하거나 프로젝트를 전송합니다:

    1. 상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
    2. 설정 > 일반을 선택합니다.
    3. 고급 섹션을 확장합니다.
    4. 경로 변경 텍스트 상자에서 경로를 편집합니다.
    5. 경로 변경을 선택합니다.
  5. 이미지를 복원합니다:

    docker push gitlab.example.com/new_org/build/new_sample_project/cr:v2.9.1
    

자세한 내용은 이 이슈를 참조하세요.

Failed to pull image 메시지#

CI/CD 작업 토큰 범위가 제한된 프로젝트에서 CI/CD 작업이 컨테이너 이미지를 가져올 수 없을 때 Failed to pull image 오류 메시지가 발생할 수 있습니다.

OCI manifest found, but accept header does not support OCI manifests 오류#

이미지를 가져올 수 없는 경우 레지스트리 로그에 다음과 유사한 오류가 있을 수 있습니다:

manifest unknown: OCI manifest found, but accept header does not support OCI manifests

이 오류는 클라이언트가 올바른 Accept: application/vnd.oci.image.manifest.v1+json 헤더를 제출하지 않을 때 발생합니다. Docker 클라이언트 버전이 최신 상태인지 확인하세요. 서드파티 도구를 사용하는 경우 OCI 매니페스트를 처리할 수 있는지 확인하세요.