컨테이너 레지스트리 문제 해결
GitLab 컨테이너 레지스트리의 일반적인 문제를 문제 해결합니다. x509 인증서 오류, 토큰 서명 오류, S3 푸시 오류, 디버그 서버, Prometheus 메트릭 등 다양한 문제 해결 방법을 설명합니다.
특정 문제를 조사하기 전에 다음 문제 해결 단계를 시도합니다: Docker 클라이언트와 GitLab 서버의 시스템 시계가 동기화되어 있는지 확인합니다(예: NTP 사용). S3 기반 레지스트리의 경우 IAM 권한과 S3 자격 증명(리전 포함)이 올바른지 확인합니다. 자세한 내용은 샘플 IAM 정책 을 참고합니다. 레지스트리 로그(예: /var/log/gitlab/registry/current )와 GitLab 프로덕션 로그 (예: /var/log/gitlab/gitlab-rails/production.log )에서 오류를 확인합니다. 컨테이너 레지스트리의 NGINX 구성 파일(예: /var/opt/gitlab/nginx/conf/gitlab-registry.conf )을 검토해 어떤 포트가 요청을 수신하는지 확인합니다. 요청이 컨테이너 레지스트리로 올바르게 전달되는지 확인합니다: curl --verbose --noproxy "*" https://<hostname>:<port>/v2/_catalog 응답에는 service="container_registry" 를 포함하는 Www-Authenticate: Bearer 줄이 있어야 합니다. 예를 들어: < HTTP/1.1 401 Unauthorized < Server: nginx < Date: Fri, 07 Mar 2025 08:24:43 GMT < Content-Type: application/json < Content-Length: 162 < Connection: keep-alive < Docker-Distribution-Api-Version: registry/2.0 < Www-Authenticate: Bearer realm="https://<hostname>/jwt/auth",service="container_registry",scope="registry:catalog:*" < X-Content-Type-Options: nosniff < {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail": [{"Type":"registry","Class":"","Name":"catalog","ProjectPath":"","Action":"*"}]}]} * Connection #0 to host <hostname> left intact 오류: There are pending migrations # 보류 중인 레지스트리 데이터베이스 마이그레이션 문제를 해결할 때는 먼저 현재 마이그레이션 상태를 확인합니다. 알려진 모든 마이그레이션의 상태와 각 마이그레이션의 적용 여부를 확인하려면 다음을 실행합니다: sudo gitlab-ctl registry-database migrate status 모든 마이그레이션이 적용되었는지 확인하려면 다음을 실행합니다: sudo gitlab-ctl registry-dat