Symptom: `:
failed to copy: httpReadSeeker: failed open: failed to do request:
Get "https://production.cloudfront.docker.com/.../data?...": EOF
The connection is severed mid-transfer (EOF) before the blob finishes.
Environment:
- Docker Desktop engine 29.5.3, WSL2 backend (
docker-desktopdistro, WSL v2), Windows 11 Pro. - Daemon proxy (from
docker info):HTTP/HTTPS Proxy: http.docker.internal:3128,No Proxy: hubproxy.docker.internal— this is Docker Desktop’s own internal proxy, not a corporate/system proxy.
Key behavior — it’s size-dependent, not transient:
- Small images pull fine:
alpine:3.20(1st try),liquibase/liquibase:5.0.1(2nd try). - Medium image eventually succeeds with retries:
rabbitmq:4.2.0-management(7th try — layers accumulate across attempts). - Large layer never completes:
postgres:17.5failed 40/40 consecutivedocker pullattempts; its big base layer gets cut every time and a single blob can’t resume, so retries make no progress.
Diagnostics proving it’s the Docker registry path, not the network:
- Path MTU is fine —
ping -f -l 1472 8.8.8.8(1500-byte packets, DF set) succeeds; all NIC MTUs are 1500. - Host network is healthy — a 60 MB host download (
Invoke-WebRequest) completed in 1.8s. - No system proxy — Windows WinINET
ProxyEnable = 0, nothing configured in Docker Desktop settings. - CDN-independent — pulling the same image from the AWS ECR public mirror (
public.ecr.aws/docker/library/postgres:17.5, a different CloudFront domaind2glxqk2uabbnd.cloudfront.net) fails identically withEOF. The only common factor is Docker Desktop’shttp.docker.internal:3128proxy. - Restarting Docker Desktop /
wsl --shutdowndid not help.
Conclusion: Docker Desktop’s internal HTTP proxy (http.docker.internal:3128) appears to be terminating large/sustained registry blob transfers with EOF, regardless of registry or CDN. Small blobs succeed; large single blobs never complete.
Questions / asks for Docker:
- Is there a known issue with the internal proxy and large blob transfers in engine 29.5.3?
- Can the daemon be made to bypass
http.docker.internal:3128, or is there a buffer/timeout/connection-limit on that proxy we can tune? - is there a problem with IPv6?