Description
docker compose up fails to create a container that mounts a type: image volume with Error response from daemon: No such image: sha256:<digest> even though the referenced image exists locally.
This was caught by openQA when running your tests and these failed: TestImageVolume & TestImageVolumeRecreateOnRebuild.
Steps To Reproduce
Scenario 1: built image
mkdir -p /tmp/imgvol-repro && cd /tmp/imgvol-repro
cat > Dockerfile <<'EOF'
FROM alpine
RUN echo hello > /content.txt
EOF
cat > compose.yaml <<'EOF'
services:
source:
build: .
image: imgvol-source
consumer:
image: alpine
depends_on:
- source
command: ["cat", "/data/content.txt"]
volumes:
- type: image
source: imgvol-source
target: /data
EOF
docker compose -p imgvol-repro up --build
Result:
✘ service:consumer:1 Error response from daemon: No such image: sha256:8d32cebc29f3dd77e043c002d09576aef8a85f58f0265541b1c082d65b3ec799 0.0s
Error response from daemon: No such image: sha256:8d32cebc29f3dd77e043c002d09576aef8a85f58f0265541b1c082d65b3ec799
Expected: consumer is created and prints hello.
Scenario 2: pulled image, second run
cat > compose-pull.yaml <<'EOF'
services:
consumer:
image: alpine
command: ["ls", "-la", "/data"]
volumes:
- type: image
source: nginx:alpine
target: /data
image:
subpath: usr/share/nginx/html/
EOF
First run: nginx:alpine is not yet present locally
docker compose -f compose-pull.yaml -p imgvol-repro up
Result: succeeds, consumer lists the mounted files.
Second run: nginx:alpine is now present locally from the first run
docker compose -f compose-pull.yaml -p imgvol-repro up
Result:
✘ service:consumer:1 Error response from daemon: No such image: sha256:1d40e3eb3bf4f138de1d67193f2aa5309fcaf343eb5ffadbf5e9439de1eb1ebb
Expected: identical successful result to the first run.
Compose Version
Docker Compose version 5.4.0
Docker Environment
Client:
Version: 29.4.0-ce
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: 0.33.0
Path: /usr/lib/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: 5.4.0
Path: /usr/lib/docker/cli-plugins/docker-compose
Server:
Containers: 1
Running: 0
Paused: 0
Stopped: 1
Images: 2
Server Version: 29.4.0-ce
Storage Driver: overlayfs
driver-type: io.containerd.snapshotter.v1
Logging Driver: json-file
Cgroup Driver: systemd
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: oci runc io.containerd.runc.v2
Default Runtime: runc
Init Binary: docker-init
containerd version: e8b1a9bc270f9952197c470b8bad573b03a3a608
runc version: v1.4.3-0-gbb14dabe
init version:
Security Options:
seccomp
Profile: builtin
selinux
cgroupns
Kernel Version: 7.1.5-1-default
Operating System: openSUSE Tumbleweed
OSType: linux
Architecture: x86_64
CPUs: 4
Total Memory: 15.55GiB
Name: susetest
ID: 9fd56017-09a8-4357-a23a-159e628b2959
Docker Root Dir: /var/lib/docker
Debug Mode: false
Experimental: false
Insecure Registries:
::1/128
127.0.0.0/8
Live Restore Enabled: false
Firewall Backend: iptables+firewalld
ReloadedAt: 2026-08-05T12:22:02-04:00
Anything else?
For some reason this was not caught by your CI. This was caught in openQA when testing the latest opensuse Tumbleweed snapshot 20260804:
http://openqa-assets.opensuse.org/tests/6146470/file/docker_compose-e2e-compose.txt
# Test messages # TestImageVolume
# failure:
Failed
=== RUN TestImageVolume
framework.go:170: WARNING: docker-model cli-plugin not found
volumes_test.go:176: Running command: docker compose version
Docker Compose version 5.4.0
volumes_test.go:182: [TestImageVolume] docker version -f {{.Server.Version}}
volumes_test.go:189: Running command: docker compose -f ./fixtures/volumes/compose.yaml --project-name compose-e2e-image-volume up with_image
volumes_test.go:189: assertion failed:
Command: docker compose -f ./fixtures/volumes/compose.yaml --project-name compose-e2e-image-volume up with_image
ExitCode: 1
Error: exit status 1
Stdout:
Stderr: Network compose-e2e-image-volume_default Creating
Network compose-e2e-image-volume_default Creating
Network compose-e2e-image-volume_default Created
Network compose-e2e-image-volume_default Created
Container compose-e2e-image-volume-with_image-1 Creating
service:with_image:1 Error response from daemon: No such image: sha256:1d40e3eb3bf4f138de1d67193f2aa5309fcaf343eb5ffadbf5e9439de1eb1ebb
Error response from daemon: No such image: sha256:1d40e3eb3bf4f138de1d67193f2aa5309fcaf343eb5ffadbf5e9439de1eb1ebb
Failures:
ExitCode was 1 expected 0
Expected no error
volumes_test.go:179: Running command: docker compose -p compose-e2e-image-volume down -v --remove-orphans
framework.go:143: Contents of config dir:
framework.go:145: - /tmp/TestImageVolume790676610/001
framework.go:145: - /tmp/TestImageVolume790676610/001/cli-plugins
framework.go:145: - /tmp/TestImageVolume790676610/001/cli-plugins/docker-buildx
framework.go:145: - /tmp/TestImageVolume790676610/001/cli-plugins/docker-compose
framework.go:145: - /tmp/TestImageVolume790676610/001/cli-plugins/docker-scan
--- FAIL: TestImageVolume (0.59s)
# Test messages # TestImageVolumeRecreateOnRebuild
# failure:
Failed
=== RUN TestImageVolumeRecreateOnRebuild
framework.go:170: WARNING: docker-model cli-plugin not found
volumes_test.go:195: Running command: docker compose version
Docker Compose version 5.4.0
volumes_test.go:202: [TestImageVolumeRecreateOnRebuild] docker version -f {{.Server.Version}}
volumes_test.go:210: Running command: docker compose -f ./fixtures/image-volume-recreate/compose.yaml --project-name compose-e2e-image-volume-recreate build --build-arg CONTENT=foo
#1 [internal] load local bake definitions
#1 reading from stdin 643B done
#1 DONE 0.0s
#2 [internal] load build definition from Dockerfile
#2 transferring dockerfile: 835B done
#2 DONE 0.0s
#3 resolve image config for docker-image://docker.io/docker/dockerfile:1
#3 DONE 0.4s
#4 docker-image://docker.io/docker/dockerfile:1@sha256:87999aa3d42bdc6bea60565083ee17e86d1f3339802f543c0d03998580f9cb89
#4 resolve docker.io/docker/dockerfile:1@sha256:87999aa3d42bdc6bea60565083ee17e86d1f3339802f543c0d03998580f9cb89 0.0s done
#4 sha256:50ba52cd6a2c01eaf1a9efbedc7c75b5da5e3965c1586001c722980487a73fd7 14.36MB / 14.36MB 0.1s done
#4 extracting sha256:50ba52cd6a2c01eaf1a9efbedc7c75b5da5e3965c1586001c722980487a73fd7 0.1s done
#4 DONE 0.3s
#5 [internal] load metadata for docker.io/library/alpine:latest
#5 DONE 0.3s
#6 [internal] load .dockerignore
#6 transferring context: 2B done
#6 DONE 0.0s
#7 [1/3] FROM docker.io/library/alpine:latest@sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b
#7 resolve docker.io/library/alpine:latest@sha256:28bd5fe8b56d1bd048e5babf5b10710ebe0bae67db86916198a6eec434943f8b 0.0s done
#7 CACHED
#8 [2/3] WORKDIR /app
#8 DONE 0.0s
#9 [3/3] RUN echo "foo" > /app/content.txt
#9 DONE 0.1s
#10 exporting to image
#10 exporting layers 0.1s done
#10 exporting manifest sha256:a86fb08624c3c1f065a96b693c6e3c8ec7595c906437cef55e82613012142bbe done
#10 exporting config sha256:771cc3ddf4f6bebce42c15337aab835cedca2b351f33e71bf3692e5fc2210ec4 done
#10 exporting attestation manifest sha256:312941b01ca2a2128b69eaf8559b8735b92201440f79ff8d9e4cf741444d42f1 0.0s done
#10 exporting manifest list sha256:0e97c48557001c59e388d5e41108df0d1901b27042a893a5abc30030071cab6a done
#10 naming to docker.io/library/image-volume-source:latest
#10 naming to docker.io/library/image-volume-source:latest done
#10 unpacking to docker.io/library/image-volume-source:latest 0.0s done
#10 DONE 0.1s
#11 resolving provenance for metadata file
#11 DONE 0.0s
volumes_test.go:212: Running command: docker compose -f ./fixtures/image-volume-recreate/compose.yaml --project-name compose-e2e-image-volume-recreate up -d
volumes_test.go:212: assertion failed:
Command: docker compose -f ./fixtures/image-volume-recreate/compose.yaml --project-name compose-e2e-image-volume-recreate up -d
ExitCode: 1
Error: exit status 1
Stdout:
Stderr: Network compose-e2e-image-volume-recreate_default Creating
Network compose-e2e-image-volume-recreate_default Creating
Network compose-e2e-image-volume-recreate_default Created
Network compose-e2e-image-volume-recreate_default Created
Container compose-e2e-image-volume-recreate-source-1 Creating
Container compose-e2e-image-volume-recreate-source-1 Created
Container compose-e2e-image-volume-recreate-consumer-1 Creating
service:consumer:1 Error response from daemon: No such image: sha256:a86fb08624c3c1f065a96b693c6e3c8ec7595c906437cef55e82613012142bbe
Error response from daemon: No such image: sha256:a86fb08624c3c1f065a96b693c6e3c8ec7595c906437cef55e82613012142bbe
Failures:
ExitCode was 1 expected 0
Expected no error
volumes_test.go:198: Running command: docker compose -p compose-e2e-image-volume-recreate down -v --remove-orphans
volumes_test.go:199: [TestImageVolumeRecreateOnRebuild] docker rmi -f image-volume-source
framework.go:143: Contents of config dir:
framework.go:145: - /tmp/TestImageVolumeRecreateOnRebuild1125399722/001
framework.go:145: - /tmp/TestImageVolumeRecreateOnRebuild1125399722/001/buildx
framework.go:145: - /tmp/TestImageVolumeRecreateOnRebuild1125399722/001/buildx/.buildNodeID
framework.go:145: - /tmp/TestImageVolumeRecreateOnRebuild1125399722/001/buildx/.lock
framework.go:145: - /tmp/TestImageVolumeRecreateOnRebuild1125399722/001/buildx/activity
framework.go:145: - /tmp/TestImageVolumeRecreateOnRebuild1125399722/001/buildx/activity/default
framework.go:145: - /tmp/TestImageVolumeRecreateOnRebuild1125399722/001/buildx/current
framework.go:145: - /tmp/TestImageVolumeRecreateOnRebuild1125399722/001/buildx/defaults
framework.go:145: - /tmp/TestImageVolumeRecreateOnRebuild1125399722/001/buildx/instances
framework.go:145: - /tmp/TestImageVolumeRecreateOnRebuild1125399722/001/buildx/refs
framework.go:145: - /tmp/TestImageVolumeRecreateOnRebuild1125399722/001/buildx/refs/__group__
framework.go:145: - /tmp/TestImageVolumeRecreateOnRebuild1125399722/001/buildx/refs/__group__/uxp25pzplg7vmlg36bg81tt88
framework.go:145: - /tmp/TestImageVolumeRecreateOnRebuild1125399722/001/buildx/refs/default
framework.go:145: - /tmp/TestImageVolumeRecreateOnRebuild1125399722/001/buildx/refs/default/default
framework.go:145: - /tmp/TestImageVolumeRecreateOnRebuild1125399722/001/buildx/refs/default/default/fo2yu6atj4qaovhgvox33mm9o
framework.go:145: - /tmp/TestImageVolumeRecreateOnRebuild1125399722/001/buildx/refs/version
framework.go:145: - /tmp/TestImageVolumeRecreateOnRebuild1125399722/001/cli-plugins
framework.go:145: - /tmp/TestImageVolumeRecreateOnRebuild1125399722/001/cli-plugins/docker-buildx
framework.go:145: - /tmp/TestImageVolumeRecreateOnRebuild1125399722/001/cli-plugins/docker-compose
framework.go:145: - /tmp/TestImageVolumeRecreateOnRebuild1125399722/001/cli-plugins/docker-scan
--- FAIL: TestImageVolumeRecreateOnRebuild (2.39s)
Description
docker compose upfails to create a container that mounts atype: imagevolume withError response from daemon: No such image: sha256:<digest>even though the referenced image exists locally.This was caught by openQA when running your tests and these failed:
TestImageVolume&TestImageVolumeRecreateOnRebuild.Steps To Reproduce
Scenario 1: built image
Result:
Expected: consumer is created and prints hello.
Scenario 2: pulled image, second run
First run: nginx:alpine is not yet present locally
docker compose -f compose-pull.yaml -p imgvol-repro upResult: succeeds, consumer lists the mounted files.
Second run: nginx:alpine is now present locally from the first run
docker compose -f compose-pull.yaml -p imgvol-repro upResult:
Expected: identical successful result to the first run.
Compose Version
Docker Environment
Anything else?
For some reason this was not caught by your CI. This was caught in openQA when testing the latest opensuse Tumbleweed snapshot 20260804:
http://openqa-assets.opensuse.org/tests/6146470/file/docker_compose-e2e-compose.txt