#cant connect to docker.io
1 messages · Page 1 of 1 (latest)
Whatâs the exact error text you get (copy/paste the full docker pull ... output)? The fix depends a lot on whether this is DNS, TCP routing, or TLS/certs.
In the meantime, a quick triage that usually narrows it down in 2 minutes:
1) Confirm itâs not just Docker Hub but general outbound HTTPS
Run these and paste the output:
curl -v https://registry-1.docker.io/v2/
nslookup registry-1.docker.io
# or: dig registry-1.docker.io
docker pull hello-world
How to interpret results
- DNS problem (common):
- Errors like
lookup registry-1.docker.io: no such host,SERVFAIL,i/o timeout nslookupfails or returns weird/private DNS results
- Errors like
- Network/routing problem:
dial tcp ...: i/o timeout,no route to host, hangs on connect- Often VPN, firewall, captive portal, or broken IPv6
- TLS/cert problem:
x509: certificate signed by unknown authority- Usually corporate MITM proxy / antivirus HTTPS inspection
2) Two very common gotchas
A) Youâre behind a proxy / corporate network
If you see TLS MITM (x509) or curl shows a proxy being used, Docker needs proxy config too (Docker Desktop has UI for this; on Linux itâs daemon/systemd env). If you paste the error I can point to the right config path for your OS.
B) DNS inside Docker is broken (Linux especially)
If curl works on the host but docker pull fails with DNS-ish errors, itâs often Docker using a bad resolver (systemd-resolved / split DNS / VPN DNS).
Tell me your OS (Linux/macOS/Windows/WSL) and:
cat /etc/resolv.conf
(you can redact internal domains/IPs if needed)
3) One question that matters
- What OS + environment is this? (Ubuntu server, WSL2, Docker Desktop on macOS/Windows, inside a VPS, etc.)
- Does
https://hub.docker.comload in a browser from the same machine/network?
Paste:
- exact
docker pullerror - output of
curl -v https://registry-1.docker.io/v2/
- output of
nslookup registry-1.docker.io
âŠand Iâll tell you which branch youâre in and the shortest fix.
omw sry im a bit over my head overwhelmed XD
im so lost xD my docker says compose app is not running
i think ill delete everythign and start from scratch but is the 5th time lol ill run your commands before doing that
That screenshot helps: itâs failing during BuildKit image resolution at:
ERROR [internal] load metadata for docker.io/library/node:24-bokworm@sha256:...
Two big things here:
1) Double-check the tag spelling
It looks like 24-bokworm in the error line â the Debian codename is bookworm (with the second âoâ):
node:24-bookworm
If itâs genuinely spelled bokworm in your Dockerfile, Docker Hub wonât have that tag.
2) We still need the real reason line (itâs just off-screen)
BuildKit always prints the actual cause right after that line (timeout / DNS / TLS / 401 / rate limit / manifest unknown), but the screenshot cuts it off.
Can you rerun and paste the full text with:
PS C:\cb\openclaw> curl -v https://registry-1.docker.io/v2/
DETALLADO: GET with 0-byte payload
curl : {"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":null}]}
En lĂnea: 1 CarĂĄcter: 1
- curl -v https://registry-1.docker.io/v2/
-
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebExc eption + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
PS C:\cb\openclaw>
docker build --progress=plain .
And also try this (this isolates âDocker Hub connectivityâ from âbuild problemâ):
docker pull node:24-bookworm
Paste the output of both. Once we see whether itâs dial tcp, x509, toomanyrequests, manifest unknown, etc., the fix is very different.
PS C:\cb\openclaw> nslookup registry-1.docker.io
Servidor: dns.google
Address: 8.8.8.8
Respuesta no autoritativa:
Nombre: registry-1.docker.io
Addresses: 2600:1f18:2148:bc02:7476:2c28:77c2:ec0d
2600:1f18:2148:bc00:125e:a0f1:61c4:f6f0
2600:1f18:2148:bc01:bf9:b2fb:4045:b7d3
2600:1f18:2148:bc01:c9ad:a3ce:930a:8e77
2600:1f18:2148:bc01:2b24:3a1f:44d3:a277
2600:1f18:2148:bc00:c202:d1e4:df30:d68f
2600:1f18:2148:bc02:ecc8:c72:61e:6603
2600:1f18:2148:bc01:cf97:364b:b223:cead
100.50.179.47
54.147.201.31
34.226.132.191
3.81.188.6
13.216.233.49
52.4.219.51
44.208.12.140
52.2.12.0
PS C:\cb\openclaw>
this is w11 personal home connection no proxy or stuff
No worries â this stuff is weirdly stressful when it fails, and the Docker errors are not friendly.
Letâs do one tiny step at a time. You donât need to understand it all â just run the commands and paste the output here.
Step 1 (quick sanity check): is it a typo in your Dockerfile?
Run:
grep -n "FROM node" Dockerfile
Paste what it prints.
(Weâre specifically checking whether it says bookworm vs bokworm.)
Step 2: can your machine pull that image at all?
Run:
docker pull node:24-bookworm
Paste the output (even if it errors).
Also tell me: are you on Linux / macOS Docker Desktop / Windows / WSL? That changes the most likely fix.
i get error on grep, maybe i dont have what it requires installed?
im using powershell
docker pull node:24-bookworm <- this always gives timeout
im on windows 11
That error is actually before âcanât reach docker.ioâ â it means your local Docker engine isnât running, so Compose canât do anything.
First: what OS are you on?
Quick checks (pick the section that matches)
If youâre on macOS / Windows (Docker Desktop)
- Open Docker Desktop
- Wait until it says Engine running (usually bottom-left)
- If itâs stuck: Quit Docker Desktop ۚۧÙÙŰ§Ù Ù and reopen (not just close the window)
Then run and paste:
docker info
If youâre on Linux
Run and paste:
docker info
If it says it canât connect to the daemon, then run:
systemctl status docker --no-pager
(If you tell me your distro Iâll give the exact âstart/enableâ command, but letâs confirm status first.)
Once docker info works locally, we can go back to the docker.io / image pull issue.
im on windows 11
PS C:\cb\openclaw> docker info
Client:
Version: 29.2.1
Context: desktop-linux
Debug Mode: false
Plugins:
agent: create or run AI agents (Docker Inc.)
Version: v1.27.1
Path: C:\Program Files\Docker\cli-plugins\docker-agent.exe
ai: Docker AI Agent - Ask Gordon (Docker Inc.)
Version: v1.18.0
Path: C:\Program Files\Docker\cli-plugins\docker-ai.exe
buildx: Docker Buildx (Docker Inc.)
Version: v0.31.1-desktop.1
Path: C:\Program Files\Docker\cli-plugins\docker-buildx.exe
compose: Docker Compose (Docker Inc.)
Version: v5.1.0
Path: C:\Program Files\Docker\cli-plugins\docker-compose.exe
debug: Get a shell into any image or container (Docker Inc.)
Version: 0.0.47
Path: C:\Program Files\Docker\cli-plugins\docker-debug.exe
desktop: Docker Desktop commands (Docker Inc.)
Version: v0.3.0
Path: C:\Program Files\Docker\cli-plugins\docker-desktop.exe
extension: Manages Docker extensions (Docker Inc.)
Version: v0.2.31
Path: C:\Program Files\Docker\cli-plugins\docker-extension.exe
init: Creates Docker-related starter files for your project (Docker Inc.)
Version: v1.4.0
Path: C:\Program Files\Docker\cli-plugins\docker-init.exe
mcp: Docker MCP Plugin (Docker Inc.)
Version: v0.40.2
Path: C:\Program Files\Docker\cli-plugins\docker-mcp.exe
model: Docker Model Runner (Docker Inc.)
Version: v1.1.5
Path: C:\Program Files\Docker\cli-plugins\docker-model.exe
offload: Docker Offload (Docker Inc.)
Version: v0.5.56
Path: C:\Program Files\Docker\cli-plugins\docker-offload.exe
pass: Docker Pass Secrets Manager Plugin (beta) (Docker Inc.)
Version: v0.0.24
Path: C:\Program Files\Docker\cli-plugins\docker-pass.exe
sandbox: Docker Sandbox (Docker Inc.)
Version: v0.12.0
Path: C:\Program Files\Docker\cli-plugins\docker-sandbox.exe
sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.)
Version: 0.6.0
Path: C:\Program Files\Docker\cli-plugins\docker-sbom.exe
scout: Docker Scout (Docker Inc.)
Version: v1.20.0
Path: C:\Program Files\Docker\cli-plugins\docker-scout.exe
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 1
Server Version: 29.2.1
Storage Driver: overlayfs
driver-type: io.containerd.snapshotter.v1
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
CDI spec directories:
/etc/cdi
/var/run/cdi
Discovered Devices:
cdi: docker.com/gpu=webgpu
Swarm: inactive
Runtimes: nvidia runc io.containerd.runc.v2
Default Runtime: runc
Init Binary: docker-init
containerd version: dea7da592f5d1d2b7755e3a161be07f43fad8f75
runc version: v1.3.4-0-gd6d73eb8
init version: de40ad0
Security Options:
seccomp
Profile: builtin
Kernel Version: 5.15.153.1-microsoft-standard-WSL2
Operating System: Docker Desktop
OSType: linux
Architecture: x86_64
CPUs: 8
Total Memory: 15.18GiB
Name: docker-desktop
ID: 880a3eb6-57e2-404a-8821-303822ddef67
Docker Root Dir: /var/lib/docker
Debug Mode: false
HTTP Proxy: http.docker.internal:3128
HTTPS Proxy: http.docker.internal:3128
No Proxy: hubproxy.docker.internal
Labels:
com.docker.desktop.address=npipe://\.\pipe\docker_cli
Experimental: false
Insecure Registries:
hubproxy.docker.internal:5555
127.0.0.0/8
::1/128
Live Restore Enabled: false
Firewall Backend: iptables
WARNING: No blkio throttle.read_bps_device support
WARNING: No blkio throttle.write_bps_device support
WARNING: No blkio throttle.read_iops_device support
WARNING: No blkio throttle.write_iops_device support
WARNING: Support for cgroup v1 is deprecated and planned to be removed by no later than May 2029 (https://github.com/moby/moby/issues/51111)
Yeah â donât nuke it yet. Reinstalls rarely fix this kind of thing, and itâs super easy to end up in the same state again.
Run these two and paste the output (screenshots are fine too):
docker version
docker info
Also tell me your OS (macOS/Windows/Linux + if itâs Docker Desktop).
What Iâm looking for is basically:
- does it say âCannot connect to the Docker daemonâ (engine not running / wrong context)
- or does it connect fine locally and only fails when pulling from docker.io (network/DNS/proxy)
Once we know which one it is, the fix is usually quick.
Nice â that output actually tells us something important:
UNAUTHORIZED from https://registry-1.docker.io/v2/ is expected
Docker Hubâs registry answers 401 to anonymous requests as part of the normal auth handshake. PowerShellâs curl (aka Invoke-WebRequest) treats any 401 as an error, but network/DNS/TLS are working.
So the issue is likely Docker Desktop/engine mode or platform mismatch, not âcanât reach docker.ioâ.
Next 2 commands (Windows-friendly)
Please run these and paste output:
docker info --format "OSType={{.OSType}} OS={{.OperatingSystem}}"
docker pull node:24-bookworm
What I expect we might see
- If
OSType=windows, then pulling/buildingnode:24-bookwormwill fail (itâs a Linux image). Fix is: Docker Desktop â Switch to Linux containers (WSL2 backend). - If the pull fails with
toomanyrequests, youâve hit Docker Hub rate limits âdocker login(or sign into Docker Desktop). - If the pull says it canât connect to the daemon, then Docker Desktop/Engine isnât running.
Paste those two outputs and weâll pick the exact fix.
PS C:\cb\openclaw> docker info --format "OSType={{.OSType}} OS={{.OperatingSystem}}"
OSType=linux OS=Docker Desktop
PS C:\cb\openclaw>
PS C:\cb\openclaw> docker pull node:24-bookworm
24-bookworm: Pulling from library/node
failed to copy: httpReadSeeker: failed open: failed to do request: Get "https://docker-images-prod.6aa30f8b08e16409b46e0173d6de2f56.r2.cloudflarestorage.com/registry-v2/docker/registry/v2/blobs/sha256/e9/e925c020d6d8277a3adf58cff70adc73b3535b43c8daf69d77147ce4bee167ff/data?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=f1baa2dd9b876aeb89efebbfc9e5d5f4%2F20260314%2Fauto%2Fs3%2Faws4_request&X-Amz-Date=20260314T184708Z&X-Amz-Expires=1200&X-Amz-SignedHeaders=host&X-Amz-Signature=b8aabeab07a26870bddb5e379c10a6ea8d47f5b20a4534ac881db225c57dbf67": dialing docker-images-prod.6aa30f8b08e16409b46e0173d6de2f56.r2.cloudflarestorage.com:443 container via direct connection because Docker Desktop has no HTTPS proxy: connecting to docker-images-prod.6aa30f8b08e16409b46e0173d6de2f56.r2.cloudflarestorage.com:443: dial tcp 172.64.66.1:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
PS C:\cb\openclaw>
DNS looks totally fine â youâre resolving both IPv6 (AAAA) and IPv4 (A) for registry-1.docker.io, which is exactly what we want.
Now we need to see what Docker itself is doing (because your earlier build failure after ~22s smells like a connection attempt timing out, often due to IPv6 weirdness or Docker being in the wrong mode).
Next: run these two and paste output
docker info --format "OSType={{.OSType}} OS={{.OperatingSystem}}"
docker pull node:24-bookworm
Also: are you running this from PowerShell only, or inside WSL2?
Optional quick IPv6 sanity test (use real curl, not PowerShellâs alias)
PowerShellâs curl is Invoke-WebRequest, so use curl.exe:
curl.exe -4 -v https://registry-1.docker.io/v2/
curl.exe -6 -v https://registry-1.docker.io/v2/
- If
-4works but-6hangs/fails â your network/WSL/Docker path likely has broken IPv6, which can cause those ~20s stalls.
But first: paste the docker info OSTyp e + the docker pull error â thatâll probably point straight to âWindows containers vs Linux containersâ or ârate limit/auth/timeoutâ.
Got it â Win11 home + no proxy is good news: this is usually not âblocked internetâ, itâs almost always one of these:
- Docker Desktop isnât actually running / engine not started
- Docker is in Windows containers mode (but youâre trying to pull a Linux image like
node:24-bookworm) - WSL2 backend is wedged
Letâs confirm which one in one command:
docker info --format "Server={{.ServerVersion}} OSType={{.OSType}}"
How to read it
- If that command errors with âcannot connect to the Docker daemonâ â open Docker Desktop and wait until it says Engine running (or restart Docker Desktop).
- If it prints
OSType=windowsâ youâre in Windows containers mode.- Fix: Docker Desktop â (tray icon / top menu) Switch to Linux containers
- Then rerun the command; you want
OSType=linux.
After that, try:
docker pull node:24-bookworm
Paste those outputs and weâll get you unstuck without reinstalling everything again.
Yep â totally normal on Windows. grep is a Linux/macOS tool, and PowerShell doesnât ship with it by default.
Use one of these Windows equivalents:
Option A (PowerShell native)
Select-String -Path .\Dockerfile -Pattern "FROM node" -CaseSensitive:$false
Option B (classic Windows)
findstr /n /i "FROM node" Dockerfile
Either one will show you the FROM node:... line.
That said, the bigger blocker sounds like Docker engine/mode â if you havenât yet, run this too (works everywhere on Windows):
docker info --format "Server={{.ServerVersion}} OSType={{.OSType}}"
Perfect â PowerShell is fine.
Use this instead of grep:
Select-String -Path .\Dockerfile -Pattern "FROM"
(or if you only want the node line)
Select-String -Path .\Dockerfile -Pattern "FROM node" -CaseSensitive:$false
And for the Docker engine/mode check (this is the one I care about most right now):
docker info --format "Server={{.ServerVersion}} OSType={{.OSType}} OS={{.OperatingSystem}}"
Paste both outputs.
Timeout on docker pull is the key symptom. Since your Windows curl to registry-1.docker.io works, this often means Docker Desktopâs Linux VM (WSL2 backend) canât reach the blob/CDN endpoints, or itâs getting stuck on IPv6.
1) Quick âunstick Docker Desktop networkingâ reset (safe)
- Quit Docker Desktop completely
- In PowerShell run:
wsl --shutdown
- Start Docker Desktop again, wait for âEngine runningâ
- Retry:
docker pull hello-world
docker pull node:24-bookworm
2) If it still times out: grab the real error line
Run:
docker -D pull node:24-bookworm
âŠand paste the last ~30 lines (the debug output usually includes the exact URL/domain itâs timing out on).
3) Common root cause on home connections: IPv6 blackhole
Quick test (from Windows):
curl.exe -4 -I https://registry-1.docker.io/v2/
curl.exe -6 -I https://registry-1.docker.io/v2/
Tell me which one fails/hangs.
If you paste the docker -D pull tail, I can tell you exactly whether itâs:
- Windows-vs-Linux containers mode,
- auth.docker.io token fetch,
- or blob download redirect (often a different domain than
registry-1.docker.io).
Yep â on Windows 11, everything Docker does goes through Docker Desktop + a Linux VM (WSL2), so âWindows has internetâ doesnât automatically mean âDocker pulls workâ.
Can you run exactly these 3 commands in PowerShell and paste the output?
docker context ls
docker info --format "OSType={{.OSType}} Server={{.ServerVersion}}"
docker -D pull hello-world
That will tell us immediately whether:
- Docker Desktop is actually talking to the right engine/context,
- youâre in Linux vs Windows containers mode,
- and what URL/domain the pull is timing out on.
(Also: if Docker Desktop is open, make sure itâs set to Linux containers.)
Found the smoking gun in your docker info:
HTTP Proxy: http.docker.internal:3128
HTTPS Proxy: http.docker.internal:3128
So even if you arenât using a proxy, Docker Desktop is configured to use one. If nothing is actually listening at that proxy (very common), Docker pulls will just hang/time out.
Fix (Docker Desktop UI)
- Open Docker Desktop
- Go to Settings â Proxies (sometimes under Resources / Network, depending on version)
- Disable manual proxy / clear the proxy fields (anything like
http.docker.internal:3128) - Apply & Restart Docker Desktop
Confirm itâs gone
After restart:
docker info | Select-String -Pattern "Proxy"
You want those Proxy lines to be empty/absent.
Then retry
docker pull hello-world
docker pull node:24-bookworm
If you can paste what shows up under Settings â Proxies (or a screenshot), I can tell you exactly what to toggle in your Docker Desktop version.
Perfect, now we finally have the real failure:
itâs not timing out to
docker.ioâ itâs timing out to Docker Hubâs blob CDN on Cloudflare R2:
docker-images-prod....r2.cloudflarestorage.comâ172.64.66.1:443
So your machine can reach the registry/auth endpoints, but canât reach the actual layer download host.
Quick confirm (from Windows host)
Run:
Test-NetConnection docker-images-prod.6aa30f8b08e16409b46e0173d6de2f56.r2.cloudflarestorage.com -Port 443
If that test fails (very likely)
Itâs a network block/route issue to Cloudflare (home router âsecurityâ, antivirus firewall, ISP weirdness, DNS filter, etc.).