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-amd64 및 mygroup/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.
-
컴퓨터에 Docker 이미지를 다운로드합니다:
docker login gitlab.example.com docker pull gitlab.example.com/org/build/sample_project/cr:v2.9.1 -
새 프로젝트 이름과 일치하도록 이미지 이름을 변경합니다:
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 -
UI 또는 API를 사용하여 이전 프로젝트의 이미지를 삭제합니다. 이미지가 대기열에 있고 삭제되는 동안 지연이 있을 수 있습니다.
-
경로를 변경하거나 프로젝트를 전송합니다:
- 상단 표시줄에서 검색 또는 이동을 선택하고 프로젝트를 찾습니다.
- 설정 > 일반을 선택합니다.
- 고급 섹션을 확장합니다.
- 경로 변경 텍스트 상자에서 경로를 편집합니다.
- 경로 변경을 선택합니다.
-
이미지를 복원합니다:
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 매니페스트를 처리할 수 있는지 확인하세요.
