You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have an image built for both linux/amd64, and linux/arm64 on my system. I wish to delete only one of the builds and keep the other, however docker rmi deletes both of them.
I tried the following:
Running docker rmi within an x86 shell (that was launched as arch -x86_64 $SHELL)
Running docker with the flag DOCKER_DEFAULT_PLATFORM=linux/amd64 in both x86 shell and arm shell.
Reproduce
On an ARM machine, run: docker pull hello-world
Then run docker pull --platform=linux/amd64 hello-world.
Then run run docker rmi with DOCKER_DEFAULT_PLATFORM=linux/amd64 variable, or inside an x86 shell. Docker will remove both the images.
Expected behavior
docker rmi should remove image for the specified platform.
docker version
Client:
Cloud integration: v1.0.35+desktop.11
Version: 25.0.3
API version: 1.44
Go version: go1.21.6
Git commit: 4debf41
Built: Tue Feb 6 21:13:26 2024
OS/Arch: darwin/arm64
Context: desktop-linux
Server: Docker Desktop 4.28.0 (139021)
Engine:
Version: 25.0.3
API version: 1.44 (minimum version 1.24)
Go version: go1.21.6
Git commit: f417435e5f6216828dec57958c490c4f8bae4f98
Built: Wed Feb 7 00:39:16 2024
OS/Arch: linux/arm64
Experimental: false
containerd:
Version: 1.6.28
GitCommit: ae07eda36dd25f8a1b98dfbf587313b99c0190bb
runc:
Version: 1.1.12
GitCommit: v1.1.12-0-g51d5e94
docker-init:
Version: 0.19.0
GitCommit: de40ad0
docker info
Client:
Version: 25.0.3
Context: desktop-linux
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.12.1-desktop.4
Path: /Users/dhanshree/.docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.24.6-desktop.1
Path: /Users/dhanshree/.docker/cli-plugins/docker-compose
debug: Get a shell into any image or container. (Docker Inc.)
Version: 0.0.24
Path: /Users/dhanshree/.docker/cli-plugins/docker-debug
dev: Docker Dev Environments (Docker Inc.)
Version: v0.1.0
Path: /Users/dhanshree/.docker/cli-plugins/docker-dev
extension: Manages Docker extensions (Docker Inc.)
Version: v0.2.22
Path: /Users/dhanshree/.docker/cli-plugins/docker-extension
feedback: Provide feedback, right in your terminal! (Docker Inc.)
Version: v1.0.4
Path: /Users/dhanshree/.docker/cli-plugins/docker-feedback
init: Creates Docker-related starter files for your project (Docker Inc.)
Version: v1.0.1
Path: /Users/dhanshree/.docker/cli-plugins/docker-init
sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.)
Version: 0.6.0
Path: /Users/dhanshree/.docker/cli-plugins/docker-sbom
scout: Docker Scout (Docker Inc.)
Version: v1.5.0
Path: /Users/dhanshree/.docker/cli-plugins/docker-scout
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 1
Server Version: 25.0.3
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
Swarm: inactive
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: ae07eda36dd25f8a1b98dfbf587313b99c0190bb
runc version: v1.1.12-0-g51d5e94
init version: de40ad0
Security Options:
seccomp
Profile: unconfined
cgroupns
Kernel Version: 6.6.16-linuxkit
Operating System: Docker Desktop
OSType: linux
Architecture: aarch64
CPUs: 14
Total Memory: 7.657GiB
Name: docker-desktop
ID: 1604a25c-32f3-4515-8c6d-39dccf22dc27
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
Experimental: false
Insecure Registries:
hubproxy.docker.internal:5555
127.0.0.0/8
Live Restore Enabled: false
WARNING: daemon is not using the default seccomp profile
Additional Info
For some reason, the image id for both the images is same, even though there's a size difference. These are logs from an arm machine (Apple M3, Sonoma)
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 53641cd209a4 11 months ago 24.4kB
hello-world latest 53641cd209a4 11 months ago 21kB
I ran the same experiment on my Linux machine where I see a completely different picture:
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest ee301c921b8a 11 months ago 9.14kB
hello-world latest d2c94e258dcb 11 months ago 13.3kB
I am super curious as to why this difference both in image ids and image sizes exists on the two machines. I guess the image id being the same would explain in a way why docker rmi deletes both the builds.
The text was updated successfully, but these errors were encountered:
Thanks! docker rmi doesn't support a --platform switch yet, so DOCKER_DEFAULT_PLATFORM has no effect.
We're actively working on a better UX for the multi-platform images and this will be possible in future releases.
This is due to how we model images with the containerd image store - image targets the manifest-list/OCI-index directly and not individual platform-specific image manifests.
In the meantime, you might want to upgrade to the 26.0 version which has a slight change to docker images output - it will no longer give multiple image entries for the same multi-platform image making this behavior more visible on the CLI side.
Description
I have an image built for both linux/amd64, and linux/arm64 on my system. I wish to delete only one of the builds and keep the other, however docker rmi deletes both of them.
I tried the following:
Running docker rmi within an x86 shell (that was launched as arch -x86_64 $SHELL)
Running docker with the flag DOCKER_DEFAULT_PLATFORM=linux/amd64 in both x86 shell and arm shell.
Reproduce
On an ARM machine, run:
docker pull hello-world
Then run
docker pull --platform=linux/amd64 hello-world
.Then run run docker rmi with
DOCKER_DEFAULT_PLATFORM=linux/amd64
variable, or inside an x86 shell. Docker will remove both the images.Expected behavior
docker rmi
should remove image for the specified platform.docker version
Client: Cloud integration: v1.0.35+desktop.11 Version: 25.0.3 API version: 1.44 Go version: go1.21.6 Git commit: 4debf41 Built: Tue Feb 6 21:13:26 2024 OS/Arch: darwin/arm64 Context: desktop-linux Server: Docker Desktop 4.28.0 (139021) Engine: Version: 25.0.3 API version: 1.44 (minimum version 1.24) Go version: go1.21.6 Git commit: f417435e5f6216828dec57958c490c4f8bae4f98 Built: Wed Feb 7 00:39:16 2024 OS/Arch: linux/arm64 Experimental: false containerd: Version: 1.6.28 GitCommit: ae07eda36dd25f8a1b98dfbf587313b99c0190bb runc: Version: 1.1.12 GitCommit: v1.1.12-0-g51d5e94 docker-init: Version: 0.19.0 GitCommit: de40ad0
docker info
Additional Info
For some reason, the image id for both the images is same, even though there's a size difference. These are logs from an arm machine (Apple M3, Sonoma)
I ran the same experiment on my Linux machine where I see a completely different picture:
I am super curious as to why this difference both in image ids and image sizes exists on the two machines. I guess the image id being the same would explain in a way why docker rmi deletes both the builds.
The text was updated successfully, but these errors were encountered: