Today I've been getting errors while trying to pull images with docker compose on my mac:
unable to get image 'clickhouse/clickhouse-server:24.8-alpine': request returned 502 Bad Gateway for API route and version http://%2Fvar%2Frun%2Fdocker.sock/v1.49/images/clickhouse/clickhouse-server:24.8-alpine/json, check if the server supports the requested API version
2025/06/10 15:12:00 http: panic serving @: runtime error: invalid memory address or nil pointer dereference
goroutine 286683 [running]:
net/http.(*conn).serve.func1()
/usr/local/go/src/net/http/server.go:1947 +0xb0
panic({0xaaaac0e6f400?, 0xaaaac27719e0?})
/usr/local/go/src/runtime/panic.go:792 +0x124
go.opentelemetry.io/otel/sdk/trace.(*recordingSpan).End.deferwrap1()
/root/build-deb/engine/vendor/go.opentelemetry.io/otel/sdk/trace/span.go:422 +0x2c
go.opentelemetry.io/otel/sdk/trace.(*recordingSpan).End(0x4001b2af00, {0x0, 0x0, 0x40016e5180?})
/root/build-deb/engine/vendor/go.opentelemetry.io/otel/sdk/trace/span.go:461 +0xa04
panic({0xaaaac0e6f400?, 0xaaaac27719e0?})
/usr/local/go/src/runtime/panic.go:792 +0x124
github.com/docker/docker/api/server/router/image.(*imageRouter).getImagesByName(0x4000aa88c0, {0xaaaac1366428, 0x40016c6060}, {0xaaaac135f3e0, 0x4006912960}, 0x4003fdc140, 0x4003257dd0)
/root/build-deb/engine/api/server/router/image/image_routes.go:414 +0x454
github.com/docker/docker/api/server/middleware.(*ExperimentalMiddleware).WrapHandler.ExperimentalMiddleware.WrapHandler.func1({0xaaaac1366428, 0x40016c6060}, {0xaaaac135f3e0, 0x4006912960}, 0x4003fdc140, 0x4003257dd0)
/root/build-deb/engine/api/server/middleware/experimental.go:26 +0x94
github.com/docker/docker/api/server/middleware.(*VersionMiddleware).WrapHandler.VersionMiddleware.WrapHandler.func1({0xaaaac1366428, 0x40016c6030}, {0xaaaac135f3e0, 0x4006912960}, 0x4003fdc140, 0x4003257dd0)
/root/build-deb/engine/api/server/middleware/version.go:84 +0x240
github.com/docker/docker/pkg/authorization.(*Middleware).WrapHandler.func1({0xaaaac1366428, 0x40016c6030}, {0xaaaac135f3e0, 0x4006912960}, 0x4003fdc140, 0x4003257dd0)
/root/build-deb/engine/pkg/authorization/middleware.go:59 +0x274
github.com/docker/docker/api/server.(*Server).makeHTTPHandler.func1({0xaaaac135f3e0, 0x4006912960}, 0x4003fdc000)
/root/build-deb/engine/api/server/server.go:61 +0x250
net/http.HandlerFunc.ServeHTTP(0xaaaac1366428?, {0xaaaac135f3e0?, 0x4006912960?}, 0xaaaac0b46ff8?)
/usr/local/go/src/net/http/server.go:2294 +0x38
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp.(*middleware).serveHTTP(0x4000d81040, {0xaaaac1358510, 0x4002a5b960}, 0x400055fa40, {0xaaaac1338a20, 0x4000d8a948})
/root/build-deb/engine/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/handler.go:171 +0xd98
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp.NewMiddleware.func1.1({0xaaaac1358510?, 0x4002a5b960?}, 0x4000b869b8?)
/root/build-deb/engine/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/handler.go:65 +0x40
net/http.HandlerFunc.ServeHTTP(0xaaaac1366428?, {0xaaaac1358510?, 0x4002a5b960?}, 0xaaaac0b400b8?)
/usr/local/go/src/net/http/server.go:2294 +0x38
net/http.HandlerFunc.ServeHTTP(0x400055f400?, {0xaaaac1358510?, 0x4002a5b960?}, 0x0?)
/usr/local/go/src/net/http/server.go:2294 +0x38
github.com/gorilla/mux.(*Router).ServeHTTP(0x4000ab4cc0, {0xaaaac1358510, 0x4002a5b960}, 0x400055edc0)
/root/build-deb/engine/vendor/github.com/gorilla/mux/mux.go:212 +0x194
net/http.serverHandler.ServeHTTP({0x4003257cb0?}, {0xaaaac1358510?, 0x4002a5b960?}, 0x1?)
/usr/local/go/src/net/http/server.go:3301 +0xbc
net/http.(*conn).serve(0x40029edb00, {0xaaaac1366428, 0x4000afc240})
/usr/local/go/src/net/http/server.go:2102 +0x52c
created by net/http.(*Server).Serve in goroutine 302
/usr/local/go/src/net/http/server.go:3454 +0x3d8
2025/06/10 15:12:00 http: panic serving @: runtime error: invalid memory address or nil pointer dereference
goroutine 286709 [running]:
net/http.(*conn).serve.func1()
/usr/local/go/src/net/http/server.go:1947 +0xb0
panic({0xaaaac0e6f400?, 0xaaaac27719e0?})
/usr/local/go/src/runtime/panic.go:792 +0x124
go.opentelemetry.io/otel/sdk/trace.(*recordingSpan).End.deferwrap1()
/root/build-deb/engine/vendor/go.opentelemetry.io/otel/sdk/trace/span.go:422 +0x2c
go.opentelemetry.io/otel/sdk/trace.(*recordingSpan).End(0x40019fc5a0, {0x0, 0x0, 0x4000583c00?})
/root/build-deb/engine/vendor/go.opentelemetry.io/otel/sdk/trace/span.go:461 +0xa04
panic({0xaaaac0e6f400?, 0xaaaac27719e0?})
/usr/local/go/src/runtime/panic.go:792 +0x124
github.com/docker/docker/api/server/router/image.(*imageRouter).getImagesByName(0x4000aa88c0, {0xaaaac1366428, 0x40096b7230}, {0xaaaac135f3e0, 0x400c08f5c0}, 0x4002399900, 0x40096b7080)
/root/build-deb/engine/api/server/router/image/image_routes.go:414 +0x454
github.com/docker/docker/api/server/middleware.(*ExperimentalMiddleware).WrapHandler.ExperimentalMiddleware.WrapHandler.func1({0xaaaac1366428, 0x40096b7230}, {0xaaaac135f3e0, 0x400c08f5c0}, 0x4002399900, 0x40096b7080)
/root/build-deb/engine/api/server/middleware/experimental.go:26 +0x94
github.com/docker/docker/api/server/middleware.(*VersionMiddleware).WrapHandler.VersionMiddleware.WrapHandler.func1({0xaaaac1366428, 0x40096b7200}, {0xaaaac135f3e0, 0x400c08f5c0}, 0x4002399900, 0x40096b7080)
/root/build-deb/engine/api/server/middleware/version.go:84 +0x240
github.com/docker/docker/pkg/authorization.(*Middleware).WrapHandler.func1({0xaaaac1366428, 0x40096b7200}, {0xaaaac135f3e0, 0x400c08f5c0}, 0x4002399900, 0x40096b7080)
/root/build-deb/engine/pkg/authorization/middleware.go:59 +0x274
github.com/docker/docker/api/server.(*Server).makeHTTPHandler.func1({0xaaaac135f3e0, 0x400c08f5c0}, 0x40023997c0)
/root/build-deb/engine/api/server/server.go:61 +0x250
net/http.HandlerFunc.ServeHTTP(0xaaaac1366428?, {0xaaaac135f3e0?, 0x400c08f5c0?}, 0xaaaac0b46ff8?)
/usr/local/go/src/net/http/server.go:2294 +0x38
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp.(*middleware).serveHTTP(0x4000d81040, {0xaaaac1358510, 0x4005c80d20}, 0x4002399680, {0xaaaac1338a20, 0x4000d8a948})
/root/build-deb/engine/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/handler.go:171 +0xd98
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp.NewMiddleware.func1.1({0xaaaac1358510?, 0x4005c80d20?}, 0x4000c4c9b8?)
/root/build-deb/engine/vendor/go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp/handler.go:65 +0x40
net/http.HandlerFunc.ServeHTTP(0xaaaac1366428?, {0xaaaac1358510?, 0x4005c80d20?}, 0xaaaac0b400b8?)
/usr/local/go/src/net/http/server.go:2294 +0x38
net/http.HandlerFunc.ServeHTTP(0x40023992c0?, {0xaaaac1358510?, 0x4005c80d20?}, 0x0?)
/usr/local/go/src/net/http/server.go:2294 +0x38
github.com/gorilla/mux.(*Router).ServeHTTP(0x4000ab4cc0, {0xaaaac1358510, 0x4005c80d20}, 0x4000e2ba40)
/root/build-deb/engine/vendor/github.com/gorilla/mux/mux.go:212 +0x194
net/http.serverHandler.ServeHTTP({0x40020a5440?}, {0xaaaac1358510?, 0x4005c80d20?}, 0x1?)
/usr/local/go/src/net/http/server.go:3301 +0xbc
net/http.(*conn).serve(0x40069ae750, {0xaaaac1366428, 0x4000afc240})
/usr/local/go/src/net/http/server.go:2102 +0x52c
created by net/http.(*Server).Serve in goroutine 302
/usr/local/go/src/net/http/server.go:3454 +0x3d8
This doesn't happen all the time. For some reason after I clean/purge the data it can work fine again, however soon enough another image will fail.
This didn't happen yesterday, I believe it may related to the latst Docker for Mac update.
unable to get image 'clickhouse/clickhouse-server:24.8-alpine': request returned 502 Bad Gateway for API route and version http://%2Fvar%2Frun%2Fdocker.sock/v1.49/images/clickhouse/clickhouse-server:24.8-alpine/json, check if the server supports the requested API version
but since this doesn't happen all the time, it's tricky to reproduce.
I expect the docker daemon to not crash and my pull to work.
Description
Today I've been getting errors while trying to pull images with docker compose on my mac:
The same image pulls fine with
docker pull.Looking at the dockerd log I see it panics:
This doesn't happen all the time. For some reason after I clean/purge the data it can work fine again, however soon enough another image will fail.
This didn't happen yesterday, I believe it may related to the latst Docker for Mac update.
Reproduce
If I know the image is breaking dockerd, this is a dead simple reproducer:
Put this in a compose.yaml file:
Run this:
Get this error:
but since this doesn't happen all the time, it's tricky to reproduce.
Expected behavior
I expect the docker daemon to not crash and my pull to work.
docker version
Client: Version: 28.2.2 API version: 1.50 Go version: go1.24.3 Git commit: e6534b4 Built: Fri May 30 12:07:35 2025 OS/Arch: darwin/arm64 Context: default Server: Docker Desktop 4.42.0 (195023) Engine: Version: 28.2.2 API version: 1.50 (minimum version 1.24) Go version: go1.24.3 Git commit: 45873be Built: Fri May 30 12:07:27 2025 OS/Arch: linux/arm64 Experimental: false containerd: Version: 1.7.27 GitCommit: 05044ec0a9a75232cad458027ca83437aae3f4da runc: Version: 1.2.5 GitCommit: v1.2.5-0-g59923ef docker-init: Version: 0.19.0 GitCommit: de40ad0docker info
Additional Info
I believe this bug appeared since I've updated to 4.42.0