Docker is fantastic right up until it throws one of its greasy, context-free error messages at you and you lose twenty minutes to a thing that has a one-line fix. I've been collecting these — the exact strings, and the first thing to check for each. Here are the ten that eat the most time.
1. Cannot connect to the Docker daemon at unix:///var/run/docker.sock
The engine isn't reachable. In order of likelihood: the daemon isn't running (systemctl status docker), you're not in the docker group (sudo usermod -aG docker $USER, then log out and back in), or you're pointing at the wrong DOCKER_HOST. It's almost never Docker being broken — it's Docker not being up or you not being allowed.
2. no space left on device
Docker hoards. Dangling images, stopped containers, unused volumes and build cache pile up on the Docker root disk. docker system df shows you where it went; docker system prune -a --volumes reclaims it (read what it'll delete first). If df -h says you have space but Docker disagrees, you may be out of inodes.
3. Bind for 0.0.0.0:8080 failed: port is already allocated
Something already owns that port — often a container you forgot was running. docker ps to find it, or ss -tlnp | grep 8080 for a non-Docker process. Stop the holder or map to a different host port.
4. pull access denied ... repository does not exist or may require 'docker login'
Three flavors: the image name/tag is wrong, it's a private registry and you're not authenticated (docker login), or you've hit Docker Hub's anonymous pull rate limit. The error says "does not exist OR requires login" for a reason — check both.
5. exec format error
You built the image for one CPU architecture and ran it on another — the classic Apple Silicon (arm64) build landing on an amd64 server. Build multi-arch with docker buildx, or pin --platform to match your target.
6. OCI runtime create failed
A low-level container-start failure. The useful part is always after the colon — a missing binary, a bad mount, a permissions problem. Read the full message; OCI runtime create failed itself tells you nothing.
7. executable file not found in $PATH
Your CMD or ENTRYPOINT points at a binary the image doesn't have — often because a slim/distroless base doesn't ship a shell, or you assumed a tool was installed. Check exec-form vs shell-form and confirm the binary actually exists in the final layer.
8. TLS handshake timeout
Usually not a cert problem — it's a network path issue (a proxy, MTU, or firewall) between you and the registry, masquerading as TLS. Test raw connectivity before you touch certificates.
9. failed to compute cache key: ... not found (COPY/ADD)
Your Dockerfile is trying to COPY a file that isn't in the build context — either the path is wrong, or .dockerignore is excluding it. Remember paths are relative to the context root, not the Dockerfile.
10. Conflict. The container name "/x" is already in use
A container with that name already exists (running or stopped). docker rm x to remove the old one, or use --rm / a fresh name. Common in CI where a previous run didn't clean up.
The pattern
Nearly every Docker error puts the useful information after the colon and a generic category before it. OCI runtime create failed is the category; the cause is the clause you skimmed past. Train yourself to read to the end of the line before you start googling.
I keep complete guides for all of these — and about eighty more Docker errors — each with the diagnostic workflow, a worked root-cause example, and the prevention checklist:
- The Docker troubleshooting toolkit — the top errors, launcher, and runbooks in one place
Which Docker error has personally cost you the most hours? Genuinely curious which of these tops the list for other people.
Top comments (0)