Fixing "denied: requested access to the resource is denied"
Recently at work I had to prepare a Docker image for a new service we wanted to deploy.
Writing the Dockerfile, building the Docker image, everything went smoothly until I was greeted with this error message upon pushing the finished image.
denied: requested access to the resource is denied
At first, I didn't know what went wrong:
- Did I tag the image wrong?
- Am I not allowed to have an extra slash in the tag name?
- Am I not correctly signed in?
- Do I not have the correct access rights to the repository?
After checking that I was indeed signed in correctly, slashes are allowed within tags and I had the correct access rights I had no other option than to search the internet for an answer.
Turns out, it's a problem that many people have stumbled over already. Here's a link to the original GitLab bug report. That's where I found the solution.
The solution is to head over to your GitLab user settings and create a new Personal Access Token (PAT).
Now there are two scopes that need to be set for the PAT to work with the registry:
Once you have create your PAT, make sure to copy the token before leaving the page, because your token is not going to be displayed again.
Now all that's left is to sign out of Docker on your CLI using
docker logout <registry_hostname:port>
and signing back in using the PAT you just created as the password:
docker login <registry_hostname:port> -u <your_username> --password-stdin
If everything went correctly, you should now be able to push your Docker image to GitLab without running into the problem.