← 문제 라이브러리
CI/CD 입문 14분

레지스트리 로그인은 성공했는데 docker push가 denied

새 서비스의 GitHub Actions 워크플로를 다른 저장소에서 복사해 만들었습니다.

검수된 문제무료
시나리오

새 서비스의 GitHub Actions 워크플로를 다른 저장소에서 복사해 만들었습니다. 레지스트리 로그인 단계는 성공으로 끝나는데, 이미지 push 단계가 매번 거부됩니다. 원래 저장소의 워크플로는 이미지 이름을 변수로 조립했는데, 새 저장소에서는 알아보기 쉽게 이름을 직접 적었습니다. 팀원은 토큰 권한이 모자란 것 같다며 조직 관리자에게 권한을 더 달라고 요청하려 합니다. 이미지 빌드 단계는 문제없이 끝나고, 빌드한 이미지도 러너 안에 잘 만들어져 있습니다. 워크플로에는 GITHUB_TOKEN으로 로그인하도록 되어 있습니다.

단서
워크플로 로그
Run docker/login-action@v3 (registry: ghcr.io)
Login Succeeded!

Run docker build -t new-service:1.0.0 .
...
Run docker push new-service:1.0.0
The push refers to repository [docker.io/library/new-service]
denied: requested access to the resource is denied
원래 저장소의 태그 방식
IMAGE=ghcr.io/${{ github.repository_owner }}/api
docker build -t $IMAGE:${{ github.sha }} .

과제 원인을 좁히고, 서비스를 되살리는 순서(검증 포함)와 재발 방지책을 적어 보세요.

먼저 볼 것
  • 이미지 이름이 어느 레지스트리를 가리키는지
  • 로그인한 곳과 push하는 곳이 같은지
점검 체크리스트
  1. push 출력의 'The push refers to repository [...]'
  2. 로그인한 레지스트리 주소
  3. 이미지 태그에 레지스트리 호스트와 조직 이름이 들어 있는지