Docker "pull access denied for library/<image>" - Fix Short-Name Resolution
Docker expanded a bare image name into docker.io/library/<name> and found nothing there. The library/ namespace holds official images, so this almost always means the official image name is misspelled.
What this error means
A pull of what looks like an official image (e.g. pyhton, ubunto) fails with pull access denied for library/<name>, repository does not exist. The library/ prefix in the error is the tell - Docker treated it as an official image.
Error response from daemon: pull access denied for pyhton, repository does not
exist or may require 'docker login': denied: requested access to the resource is denied
# Docker resolved this to docker.io/library/pyhton (typo of python)Common causes
Misspelled official image name
A typo in an official image (pyhton, ubunto, postgers) resolves to a non-existent library/<typo> repository, which returns the generic denied/does-not-exist response.
A private image referenced without its namespace
Referencing your own image as a bare name makes Docker look in library/ (official images), not your account, so it is "not found".
How to fix it
Correct the official image name
Use the exact official repository name on Docker Hub.
docker pull python:3.12 # not "pyhton"
docker pull ubuntu:24.04 # not "ubunto"Fully qualify private images
Include the registry and namespace so Docker does not fall back to library/.
docker pull ghcr.io/myorg/api:1.4.2 # not just "api"How to prevent it
- Pin official images by exact name and tag (ideally digest).
- Always fully-qualify private image references with registry + namespace.
- Keep base image names in one place so typos are easy to catch.