-
Notifications
You must be signed in to change notification settings - Fork 18.9k
Description
Description
After updating Docker from 28.1.1 to 28.2.2 (Docker Desktop on macOS Apple silicon 4.41.2 -> 4.42.0) docker push has changed behaviour when using containerd for image storage ("Use containerd for pulling and storing images" enabled in Docker Desktop).
When I pull an image from Docker Hub and then tag and push it to my local registry, it pushes only the image manifest by its digest but doesn't PUT the tag reference for the manifest.
Reproduce
# Start local registry.
docker run -d --rm -e REGISTRY_LOGLEVEL=debug -p 5001:5000 registry:2
docker pull busybox:latest
docker tag busybox:latest localhost:5001/busybox:latest
docker push localhost:5001/busybox:latest
The output for push looks good:
The push refers to repository [localhost:5001/busybox]
189fdd150837: Pushed
latest: digest: sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82 size: 610
i Info → Not all multiplatform-content is present and only the available single-platform image was pushed
sha256:f85340bf132ae937d2c2a763b8335c9bab35d6e8293f70f606b9c6178d84f42b -> sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82
Try to pull it back:
docker pull localhost:5001/busybox:latest
Error response from daemon: failed to resolve reference "localhost:5001/busybox:latest": localhost:5001/busybox:latest: not found
See the registry logs for docker push:
DEBU[0005] GetImageManifest go.version=go1.20.8 http.request.host="localhost:5001" http.request.id=14afa434-1d78-4f9c-925e-45626a07277f http.request.method=HEAD http.request.remoteaddr="172.17.0.1:65516" http.request.uri="/v2/busybox/manifests/sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82" http.request.useragent="docker/28.2.2 go/go1.24.3 git-commit/45873be kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.2.2 \(darwin\))" vars.name=busybox vars.reference="sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82"
DEBU[0005] (*manifestStore).Get go.version=go1.20.8 http.request.host="localhost:5001" http.request.id=14afa434-1d78-4f9c-925e-45626a07277f http.request.method=HEAD http.request.remoteaddr="172.17.0.1:65516" http.request.uri="/v2/busybox/manifests/sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82" http.request.useragent="docker/28.2.2 go/go1.24.3 git-commit/45873be kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.2.2 \(darwin\))" vars.name=busybox vars.reference="sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82"
ERRO[0005] response completed with error err.code="manifest unknown" err.detail="unknown manifest name=busybox revision=sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82" err.message="manifest unknown" go.version=go1.20.8 http.request.host="localhost:5001" http.request.id=14afa434-1d78-4f9c-925e-45626a07277f http.request.method=HEAD http.request.remoteaddr="172.17.0.1:65516" http.request.uri="/v2/busybox/manifests/sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82" http.request.useragent="docker/28.2.2 go/go1.24.3 git-commit/45873be kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.2.2 \(darwin\))" http.response.contenttype="application/json; charset=utf-8" http.response.duration="721.334µs" http.response.status=404 http.response.written=183 vars.name=busybox vars.reference="sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82"
172.17.0.1 - - [13/Jun/2025:03:49:18 +0000] "HEAD /v2/busybox/manifests/sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82 HTTP/1.1" 404 183 "" "docker/28.2.2 go/go1.24.3 git-commit/45873be kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.2.2 \\(darwin\\))"
DEBU[0005] authorizing request go.version=go1.20.8 http.request.contenttype="application/vnd.oci.image.manifest.v1+json" http.request.host="localhost:5001" http.request.id=ce3b6a11-889e-48ef-9b2f-37022381ec0c http.request.method=PUT http.request.remoteaddr="172.17.0.1:65516" http.request.uri="/v2/busybox/manifests/sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82" http.request.useragent="docker/28.2.2 go/go1.24.3 git-commit/45873be kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.2.2 \(darwin\))" vars.name=busybox vars.reference="sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82"
DEBU[0005] PutImageManifest go.version=go1.20.8 http.request.contenttype="application/vnd.oci.image.manifest.v1+json" http.request.host="localhost:5001" http.request.id=ce3b6a11-889e-48ef-9b2f-37022381ec0c http.request.method=PUT http.request.remoteaddr="172.17.0.1:65516" http.request.uri="/v2/busybox/manifests/sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82" http.request.useragent="docker/28.2.2 go/go1.24.3 git-commit/45873be kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.2.2 \(darwin\))" vars.name=busybox vars.reference="sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82"
DEBU[0005] Putting an OCI Manifest! go.version=go1.20.8 http.request.contenttype="application/vnd.oci.image.manifest.v1+json" http.request.host="localhost:5001" http.request.id=ce3b6a11-889e-48ef-9b2f-37022381ec0c http.request.method=PUT http.request.remoteaddr="172.17.0.1:65516" http.request.uri="/v2/busybox/manifests/sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82" http.request.useragent="docker/28.2.2 go/go1.24.3 git-commit/45873be kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.2.2 \(darwin\))" vars.name=busybox vars.reference="sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82"
DEBU[0005] (*manifestStore).Put go.version=go1.20.8 http.request.contenttype="application/vnd.oci.image.manifest.v1+json" http.request.host="localhost:5001" http.request.id=ce3b6a11-889e-48ef-9b2f-37022381ec0c http.request.method=PUT http.request.remoteaddr="172.17.0.1:65516" http.request.uri="/v2/busybox/manifests/sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82" http.request.useragent="docker/28.2.2 go/go1.24.3 git-commit/45873be kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.2.2 \(darwin\))" vars.name=busybox vars.reference="sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82"
DEBU[0005] (*ocischemaManifestHandler).Put go.version=go1.20.8 http.request.contenttype="application/vnd.oci.image.manifest.v1+json" http.request.host="localhost:5001" http.request.id=ce3b6a11-889e-48ef-9b2f-37022381ec0c http.request.method=PUT http.request.remoteaddr="172.17.0.1:65516" http.request.uri="/v2/busybox/manifests/sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82" http.request.useragent="docker/28.2.2 go/go1.24.3 git-commit/45873be kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.2.2 \(darwin\))" vars.name=busybox vars.reference="sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82"
DEBU[0005] Succeeded in putting manifest! go.version=go1.20.8 http.request.contenttype="application/vnd.oci.image.manifest.v1+json" http.request.host="localhost:5001" http.request.id=ce3b6a11-889e-48ef-9b2f-37022381ec0c http.request.method=PUT http.request.remoteaddr="172.17.0.1:65516" http.request.uri="/v2/busybox/manifests/sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82" http.request.useragent="docker/28.2.2 go/go1.24.3 git-commit/45873be kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.2.2 \(darwin\))" vars.name=busybox vars.reference="sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82"
INFO[0005] response completed go.version=go1.20.8 http.request.contenttype="application/vnd.oci.image.manifest.v1+json" http.request.host="localhost:5001" http.request.id=ce3b6a11-889e-48ef-9b2f-37022381ec0c http.request.method=PUT http.request.remoteaddr="172.17.0.1:65516" http.request.uri="/v2/busybox/manifests/sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82" http.request.useragent="docker/28.2.2 go/go1.24.3 git-commit/45873be kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.2.2 \(darwin\))" http.response.duration=3.506875ms http.response.status=201 http.response.written=0
172.17.0.1 - - [13/Jun/2025:03:49:18 +0000] "PUT /v2/busybox/manifests/sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82 HTTP/1.1" 201 0 "" "docker/28.2.2 go/go1.24.3 git-commit/45873be kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.2.2 \\(darwin\\))"
Logs on docker pull:
DEBU[0027] authorizing request go.version=go1.20.8 http.request.host="localhost:5001" http.request.id=5ec02baa-5d7c-4385-ae42-24f3a9931d85 http.request.method=HEAD http.request.remoteaddr="172.17.0.1:56784" http.request.uri="/v2/busybox/manifests/latest" http.request.useragent="docker/28.2.2 go/go1.24.3 git-commit/45873be kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.2.2 \(darwin\))" vars.name=busybox vars.reference=latest
DEBU[0027] GetImageManifest go.version=go1.20.8 http.request.host="localhost:5001" http.request.id=5ec02baa-5d7c-4385-ae42-24f3a9931d85 http.request.method=HEAD http.request.remoteaddr="172.17.0.1:56784" http.request.uri="/v2/busybox/manifests/latest" http.request.useragent="docker/28.2.2 go/go1.24.3 git-commit/45873be kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.2.2 \(darwin\))" vars.name=busybox vars.reference=latest
ERRO[0027] response completed with error err.code="manifest unknown" err.detail="unknown tag=latest" err.message="manifest unknown" go.version=go1.20.8 http.request.host="localhost:5001" http.request.id=5ec02baa-5d7c-4385-ae42-24f3a9931d85 http.request.method=HEAD http.request.remoteaddr="172.17.0.1:56784" http.request.uri="/v2/busybox/manifests/latest" http.request.useragent="docker/28.2.2 go/go1.24.3 git-commit/45873be kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.2.2 \(darwin\))" http.response.contenttype="application/json; charset=utf-8" http.response.duration=2.400459ms http.response.status=404 http.response.written=96 vars.name=busybox vars.reference=latest
172.17.0.1 - - [13/Jun/2025:03:49:40 +0000] "HEAD /v2/busybox/manifests/latest HTTP/1.1" 404 96 "" "docker/28.2.2 go/go1.24.3 git-commit/45873be kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.2.2 \\(darwin\\))"
Note that vars.reference="sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82" is a digest everywhere. The reference for the manifest is put for the digest only: PUT /v2/busybox/manifests/sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82. There is no PUT for /v2/busybox/manifests/latest.
Expected behavior
The expected behavior is docker push should push the latest tag so that it stored in the registry and docker pull localhost:5001/busybox:latest succeeds.
Registry logs using Docker 28.1.1 (Docker Desktop on macOS Apple silicon 4.41.2):
DEBU[0045] GetImageManifest go.version=go1.20.8 http.request.host="localhost:5001" http.request.id=6718a3d7-6745-48ad-8305-fce1aefe7991 http.request.method=HEAD http.request.remoteaddr="172.17.0.1:59268" http.request.uri="/v2/busybox/manifests/latest" http.request.useragent="docker/28.1.1 go/go1.23.8 git-commit/01f442b kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.1.1 \(darwin\))" vars.name=busybox vars.reference=latest
ERRO[0045] response completed with error err.code="manifest unknown" err.detail="unknown tag=latest" err.message="manifest unknown" go.version=go1.20.8 http.request.host="localhost:5001" http.request.id=6718a3d7-6745-48ad-8305-fce1aefe7991 http.request.method=HEAD http.request.remoteaddr="172.17.0.1:59268" http.request.uri="/v2/busybox/manifests/latest" http.request.useragent="docker/28.1.1 go/go1.23.8 git-commit/01f442b kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.1.1 \(darwin\))" http.response.contenttype="application/json; charset=utf-8" http.response.duration="598.541µs" http.response.status=404 http.response.written=96 vars.name=busybox vars.reference=latest
172.17.0.1 - - [13/Jun/2025:03:45:04 +0000] "HEAD /v2/busybox/manifests/latest HTTP/1.1" 404 96 "" "docker/28.1.1 go/go1.23.8 git-commit/01f442b kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.1.1 \\(darwin\\))"
DEBU[0045] authorizing request go.version=go1.20.8 http.request.contenttype="application/vnd.oci.image.manifest.v1+json" http.request.host="localhost:5001" http.request.id=b49156ab-2307-4241-84ed-4044e1e0dfe6 http.request.method=PUT http.request.remoteaddr="172.17.0.1:59268" http.request.uri="/v2/busybox/manifests/latest" http.request.useragent="docker/28.1.1 go/go1.23.8 git-commit/01f442b kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.1.1 \(darwin\))" vars.name=busybox vars.reference=latest
DEBU[0045] PutImageManifest go.version=go1.20.8 http.request.contenttype="application/vnd.oci.image.manifest.v1+json" http.request.host="localhost:5001" http.request.id=b49156ab-2307-4241-84ed-4044e1e0dfe6 http.request.method=PUT http.request.remoteaddr="172.17.0.1:59268" http.request.uri="/v2/busybox/manifests/latest" http.request.useragent="docker/28.1.1 go/go1.23.8 git-commit/01f442b kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.1.1 \(darwin\))" vars.name=busybox vars.reference=latest
DEBU[0045] Putting an OCI Manifest! go.version=go1.20.8 http.request.contenttype="application/vnd.oci.image.manifest.v1+json" http.request.host="localhost:5001" http.request.id=b49156ab-2307-4241-84ed-4044e1e0dfe6 http.request.method=PUT http.request.remoteaddr="172.17.0.1:59268" http.request.uri="/v2/busybox/manifests/latest" http.request.useragent="docker/28.1.1 go/go1.23.8 git-commit/01f442b kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.1.1 \(darwin\))" vars.name=busybox vars.reference=latest
DEBU[0045] (*manifestStore).Put go.version=go1.20.8 http.request.contenttype="application/vnd.oci.image.manifest.v1+json" http.request.host="localhost:5001" http.request.id=b49156ab-2307-4241-84ed-4044e1e0dfe6 http.request.method=PUT http.request.remoteaddr="172.17.0.1:59268" http.request.uri="/v2/busybox/manifests/latest" http.request.useragent="docker/28.1.1 go/go1.23.8 git-commit/01f442b kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.1.1 \(darwin\))" vars.name=busybox vars.reference=latest
DEBU[0045] (*ocischemaManifestHandler).Put go.version=go1.20.8 http.request.contenttype="application/vnd.oci.image.manifest.v1+json" http.request.host="localhost:5001" http.request.id=b49156ab-2307-4241-84ed-4044e1e0dfe6 http.request.method=PUT http.request.remoteaddr="172.17.0.1:59268" http.request.uri="/v2/busybox/manifests/latest" http.request.useragent="docker/28.1.1 go/go1.23.8 git-commit/01f442b kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.1.1 \(darwin\))" vars.name=busybox vars.reference=latest
DEBU[0045] Succeeded in putting manifest! go.version=go1.20.8 http.request.contenttype="application/vnd.oci.image.manifest.v1+json" http.request.host="localhost:5001" http.request.id=b49156ab-2307-4241-84ed-4044e1e0dfe6 http.request.method=PUT http.request.remoteaddr="172.17.0.1:59268" http.request.uri="/v2/busybox/manifests/latest" http.request.useragent="docker/28.1.1 go/go1.23.8 git-commit/01f442b kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.1.1 \(darwin\))" vars.name=busybox vars.reference=latest
INFO[0045] response completed go.version=go1.20.8 http.request.contenttype="application/vnd.oci.image.manifest.v1+json" http.request.host="localhost:5001" http.request.id=b49156ab-2307-4241-84ed-4044e1e0dfe6 http.request.method=PUT http.request.remoteaddr="172.17.0.1:59268" http.request.uri="/v2/busybox/manifests/latest" http.request.useragent="docker/28.1.1 go/go1.23.8 git-commit/01f442b kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.1.1 \(darwin\))" http.response.duration=4.676542ms http.response.status=201 http.response.written=0
172.17.0.1 - - [13/Jun/2025:03:45:04 +0000] "PUT /v2/busybox/manifests/latest HTTP/1.1" 201 0 "" "docker/28.1.1 go/go1.23.8 git-commit/01f442b kernel/6.10.14-linuxkit os/linux arch/arm64 containerd-client/2.0.5+unknown storage-driver/overlayfs UpstreamClient(Docker-Client/28.1.1 \\(darwin\\))"
Note that the latest tag reference has been put correctly PUT /v2/busybox/manifests/latest HTTP/1.1.
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: desktop-linux
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
Client:
Version: 28.2.2
Context: desktop-linux
Debug Mode: false
Plugins:
ai: Docker AI Agent - Ask Gordon (Docker Inc.)
Version: v1.4.0
Path: /Users/spy/.docker/cli-plugins/docker-ai
buildx: Docker Buildx (Docker Inc.)
Version: v0.24.0-desktop.2
Path: /Users/spy/.docker/cli-plugins/docker-buildx
cloud: Docker Cloud (Docker Inc.)
Version: v0.3.9
Path: /Users/spy/.docker/cli-plugins/docker-cloud
compose: Docker Compose (Docker Inc.)
Version: v2.36.2-desktop.1
Path: /Users/spy/.docker/cli-plugins/docker-compose
debug: Get a shell into any image or container (Docker Inc.)
Version: 0.0.41
Path: /Users/spy/.docker/cli-plugins/docker-debug
desktop: Docker Desktop commands (Docker Inc.)
Version: v0.1.9
Path: /Users/spy/.docker/cli-plugins/docker-desktop
extension: Manages Docker extensions (Docker Inc.)
Version: v0.2.29
Path: /Users/spy/.docker/cli-plugins/docker-extension
init: Creates Docker-related starter files for your project (Docker Inc.)
Version: v1.4.0
Path: /Users/spy/.docker/cli-plugins/docker-init
mcp: Docker MCP Plugin (Docker Inc.)
Version: dev
Path: /Users/spy/.docker/cli-plugins/docker-mcp
model: Docker Model Runner (Docker Inc.)
Version: v0.1.24
Path: /Users/spy/.docker/cli-plugins/docker-model
pussh: Push Docker images through SSH tunnel (Unregistry)
Version: 0.1.0
Path: /Users/spy/.docker/cli-plugins/docker-pussh
sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.)
Version: 0.6.0
Path: /Users/spy/.docker/cli-plugins/docker-sbom
scout: Docker Scout (Docker Inc.)
Version: v1.18.0
Path: /Users/spy/.docker/cli-plugins/docker-scout
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 30
Server Version: 28.2.2
Storage Driver: overlayfs
driver-type: io.containerd.snapshotter.v1
Logging Driver: json-file
Cgroup Driver: cgroupfs
Cgroup Version: 2
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
Swarm: inactive
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 05044ec0a9a75232cad458027ca83437aae3f4da
runc version: v1.2.5-0-g59923ef
init version: de40ad0
Security Options:
seccomp
Profile: builtin
cgroupns
Kernel Version: 6.10.14-linuxkit
Operating System: Docker Desktop
OSType: linux
Architecture: aarch64
CPUs: 8
Total Memory: 9.704GiB
Name: docker-desktop
ID: 4b14e7c3-6b93-47b1-8d35-5f52ea454843
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=unix:///Users/spy/Library/Containers/com.docker.docker/Data/docker-cli.sock
Experimental: false
Insecure Registries:
hubproxy.docker.internal:5555
::1/128
127.0.0.0/8
Live Restore Enabled: falseAdditional Info
When I explicitly specify the platform to push, it pushes the tag correctly:
docker push --platform linux/arm64/v8 localhost:5001/busybox:latest
I manually pulled all platforms for the busybox image but push without specifying the platform still doesn't push the tag:
$ docker images --tree
localhost:5001/busybox:latest
busybox:latest f85340bf132a 56MB 17.9MB
├─ linux/amd64 7c0ffe575123 6.55MB 2.15MB
├─ linux/arm/v5 94d9880e2e0e 5.38MB 1.78MB
├─ linux/arm/v6 1a0f0cba8dd8 2.79MB 952kB
├─ linux/arm/v7 c859036e179b 4.12MB 1.56MB
├─ linux/arm64/v8 68a0d55a75c9 6.02MB 1.85MB
├─ linux/386 18ac7a6883a8 7.03MB 2.21MB
├─ linux/mips64le ddac8b228527 7.31MB 2.08MB
├─ linux/ppc64le 8412c80c59e2 8.34MB 2.47MB
├─ linux/riscv64 863941f561e8 2.5MB 925kB
└─ linux/s390x fec56dcf5c3b 6.01MB 1.89MB
$ docker push localhost:5001/busybox
Using default tag: latest
The push refers to repository [localhost:5001/busybox]
189fdd150837: Pushed
latest: digest: sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82 size: 610
i Info → Not all multiplatform-content is present and only the available single-platform image was pushed
sha256:f85340bf132ae937d2c2a763b8335c9bab35d6e8293f70f606b9c6178d84f42b -> sha256:68a0d55a75c935e1101d16ded1c748babb7f96a9af43f7533ba83b87e2508b82
The multi-platform image I built locally has been successfully pushed though:
$ docker build --platform linux/amd64,linux/arm64 -t localhost:5000/docs .
...
$ docker push localhost:5001/docs
Using default tag: latest
The push refers to repository [localhost:5001/docs]
bcc91abf7145: Pushed
10333d3685a0: Pushed
6e771e15690e: Pushed
f18232174bc9: Pushed
014036ce367b: Pushed
dad9499f3f20: Pushed
bdce526f2e23: Pushed
eb621c62f244: Pushed
f5475df3da1b: Pushed
4f4fb700ef54: Pushed
3b0ae3ace4a6: Pushed
4f1d2c43b341: Pushed
6e6e55cd8053: Pushed
a7ffa38328d6: Pushed
4348a28cf742: Pushed
latest: digest: sha256:b8c447f129a683198a5415ca532660bd7de430051c6671469304e2bc4d3cdb9d size: 1609
I suspect the bug is related to this change #49949 cc @henry118