Skip to content

include platform and creation date listing image - #12856

Merged
glours merged 1 commit into
docker:mainfrom
ndeloof:images_pf
Jun 2, 2025
Merged

include platform and creation date listing image#12856
glours merged 1 commit into
docker:mainfrom
ndeloof:images_pf

Conversation

@ndeloof

Copy link
Copy Markdown
Contributor

What I did
Added PLATFORM and CREATED columns in docker compose images output

decoupled from getImageSummaries used by lifecycle methods, as having a ImageSummary#ContainerName attribute is confusing

$ docker compose images
CONTAINER REPOSITORY TAG PLATFORM IMAGE ID SIZE CREATED
truc-hello-1 truc-hello latest linux/arm64 00dd0d06b496 87.9MB 2 hours ago

Related issue

(not mandatory) A picture of a cute animal, if possible in relation to what you did

@ndeloof
ndeloof requested a review from a team as a code ownerMay 21, 2025 09:22
@ndeloof
ndeloof requested a review from gloursMay 21, 2025 09:22
@thaJeztah

Copy link
Copy Markdown
Member

Slightly wondering about the PLATFORM here - what does the IMAGE ID refer to? Is that referring to the variant of the image? Considering multi-platform images and such.

cc @vvoland

@thaJeztah

Copy link
Copy Markdown
Member

wondering if it would make more sense to show a platform column for the list of containers; something we'll be adding as an optional column for docker ps; see docker/cli#6042

@ndeloof

Copy link
Copy Markdown
ContributorAuthor

IMAGE ID is the one returned by ImageInspect

@thaJeztah

Copy link
Copy Markdown
Member

Yeah, so by default, docker image inspect show the ID of the manifest-index;

docker image inspect --format '{{.ID}}' alpine
sha256:a8560b36e8b8210634f77d9f7f9efd7ffa463e380b75e2e74aff4511df3ef88c
docker buildx imagetools inspect alpine | head -n3
Name: docker.io/library/alpine:latest
MediaType: application/vnd.oci.image.index.v1+json
Digest: sha256:a8560b36e8b8210634f77d9f7f9efd7ffa463e380b75e2e74aff4511df3ef88c
docker image ls --tree
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
alpine:latest a8560b36e8b8 25MB 7.64MB
├─ linux/amd64 1c4eef651f65 12.1MB 3.64MB
├─ linux/arm/v6 903bfe2ae994 0B 0B
├─ linux/arm/v7 9c2d245b3c01 0B 0B
├─ linux/arm64/v8 757d680068d7 12.8MB 3.99MB
├─ linux/386 2436f2b3b7d2 0B 0B
├─ linux/ppc64le 9ed53fd3b831 0B 0B
├─ linux/riscv64 1de5eb4a9a67 0B 0B
└─ linux/s390x fe0dcdd1f783 0B 0B

So, technically adding a platform to that is not correct, as the platform would be for the image manifests underneath; using docker image inspect and specifying a platform will show a different ID for that reason;

docker image inspect --platform=linux/amd64 --format '{{.ID}}' alpine
sha256:1c4eef651f65e2f7daee7ee785882ac164b02b78fb74503052a26dc061c90474
docker buildx imagetools inspect alpine | grep -A3 1c4eef651f65e2f7daee7ee785882ac164b02b78fb74503052a26dc061c90474 | head -n3
Name: docker.io/library/alpine:latest@sha256:1c4eef651f65e2f7daee7ee785882ac164b02b78fb74503052a26dc061c90474
MediaType: application/vnd.oci.image.manifest.v1+json
Platform: linux/amd64
docker image inspect --platform=linux/arm64 --format '{{.ID}}' alpine
sha256:757d680068d77be46fd1ea20fb21db16f150468c5e7079a08a2e4705aec096ac
docker buildx imagetools inspect alpine | grep -A3 757d680068d77be46fd1ea20fb21db16f150468c5e7079a08a2e4705aec096ac | head -n3
Name: docker.io/library/alpine:latest@sha256:757d680068d77be46fd1ea20fb21db16f150468c5e7079a08a2e4705aec096ac
MediaType: application/vnd.oci.image.manifest.v1+json
Platform: linux/arm64/v8

@ndeloof

Copy link
Copy Markdown
ContributorAuthor

docker image inspect show the ID of the manifest-index

not when ran with --platform, which is what we show here as image ID

$ docker compose images
CONTAINER REPOSITORY TAG PLATFORM IMAGE ID SIZE CREATED
truc-hello-amd64-1 debian latest linux/amd64 6bc30d909583 48.5MB 4 minutes ago
truc-hello-arm64-1 debian latest linux/arm64/v8 f245326d62b3 48.3MB 4 minutes ago

@thaJeztah

Copy link
Copy Markdown
Member

Right, but neither 6bc30d909583 nor f245326d62b3 are tagged as debian:latest - the manifest index is tagged, and the underlying images are not.

That's basically the reason why we opted not to show platform in docker image ls, and only show it with the --tree view

@ndeloof

Copy link
Copy Markdown
ContributorAuthor

ok, fixed to only display the top-level tagged image ID

$ docker compose images
CONTAINER REPOSITORY TAG PLATFORM IMAGE ID SIZE CREATED
truc-hello-amd64-1 debian latest linux/amd64 264982ff4d18 48.5MB 32 minutes ago
truc-hello-arm64-1 debian latest linux/arm64/v8 264982ff4d18 48.3MB 32 minutes ago

Maybe you should close moby/moby#49995 if there's no plan to support this ?

@ndeloof
ndeloofforce-pushed the images_pf branch 4 times, most recently from 274b7e6 to e5b742aCompareMay 21, 2025 17:26
…ose application
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>

@gloursglours left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM and tests ok 👍

@glours
glours merged commit eb3074b into docker:mainJun 2, 2025
@ndeloof
ndeloof deleted the images_pf branch June 2, 2025 17:03
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Jun 12, 2025
This MR contains the following updates:
| Package | Update | Change |
|---|---|---|
| [docker/compose](https://github.com/docker/compose) | minor | `v2.36.2` -> `v2.37.1` |
MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).
**Proposed changes to behavior should be submitted there as MRs.**
---
### Release Notes
<details>
<summary>docker/compose (docker/compose)</summary>
### [`v2.37.1`](https://github.com/docker/compose/releases/tag/v2.37.1)
[Compare Source](docker/compose@v2.37.0...v2.37.1)
#### What's Changed
##### ✨ Improvements
- Add support for extra_hosts building with bake by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12935
##### 🐛 Fixes
- Fix SIGSEGV on Enable Watch by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12909
- Revert docker compose images JSON output to array format by [@&#8203;x0rw](https://github.com/x0rw) in docker/compose#12917
- Sanitize service name so they can be used as bake targets by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12925
- Only look for required image in bake metadata by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12930
- Don't create metadatafile, just generate a random name by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12931
- Fix the generated manifest for compose artifacts by [@&#8203;jcarter3](https://github.com/jcarter3) in docker/compose#12933
- Fix support for additional_contexts with service sub-dependencies by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12936
- Fix panic on failure starting plugin server by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12914
##### 🔧 Internal
- Do not forget to remove the bake metadata file by [@&#8203;glours](https://github.com/glours) in docker/compose#12912
##### ⚙️ Dependencies
- Bump golang.org/x/sync v0.15.0 by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12913
- Build(deps): bump google.golang.org/grpc from 1.72.2 to 1.73.0 by [@&#8203;dependabot](https://github.com/dependabot) in docker/compose#12910
#### New Contributors
- [@&#8203;x0rw](https://github.com/x0rw) made their first contribution in docker/compose#12917
- [@&#8203;jcarter3](https://github.com/jcarter3) made their first contribution in docker/compose#12933
**Full Changelog**: docker/compose@v2.37.0...v2.37.1
### [`v2.37.0`](https://github.com/docker/compose/releases/tag/v2.37.0)
[Compare Source](docker/compose@v2.36.2...v2.37.0)
#### What's Changed
ℹ️ `bake` is now used as the default images builder, if you don't want to use it you could opt-out by setting the `COMPOSE_BAKE` env variable to `false`
##### ✨ Improvements
- Add compose bridge by [@&#8203;glours](https://github.com/glours) in docker/compose#12866
- Include platform and creation date listing image by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12856
- Add support of metadata subcommand for provider services by [@&#8203;glours](https://github.com/glours) in docker/compose#12903
- Use bake by default by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12699
##### 🐛 Fixes
- (Re)start dependent services after watch rebuilt image by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12879
- Resolve symlinks while making dockerfile path absolute by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12884
- Fix support for `BUILDKIT_PROGRESS` by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12894
- Build dependent service images when required by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12896
- Fix recreate network (and connected containers) on config updates by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12899
- `pull` does not require `env_file` being resolved by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12904
##### 🔧 Internal
- Refactor: use slices.Contains to simplify code by [@&#8203;tongjicoder](https://github.com/tongjicoder) in docker/compose#12877
- Remove utils.Contains to prefer slice.ContainsFunc by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12878
- Fix typo in suggestion log by [@&#8203;Carlos-err406](https://github.com/Carlos-err406) in docker/compose#12893
- Replace uses of golang.org/x/exp/(maps|slices) for stdlib and fix linting by [@&#8203;thaJeztah](https://github.com/thaJeztah) in docker/compose#12885
- Debug message to help diagnose platform mismatch by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12905
- (refactoting) Move watch logic into a dedicated Watcher type by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12865
##### ⚙️ Dependencies
- Bump cli-doc-tools to v0.10.0 by [@&#8203;glours](https://github.com/glours) in docker/compose#12855
- Bump github.com/docker/docker, docker/cli v28.2.2 by [@&#8203;thaJeztah](https://github.com/thaJeztah) in docker/compose#12875
- Build(deps): bump google.golang.org/grpc from 1.72.1 to 1.72.2 by [@&#8203;dependabot](https://github.com/dependabot) in docker/compose#12872
#### New Contributors
- [@&#8203;tongjicoder](https://github.com/tongjicoder) made their first contribution in docker/compose#12877
- [@&#8203;Carlos-err406](https://github.com/Carlos-err406) made their first contribution in docker/compose#12893
**Full Changelog**: docker/compose@v2.36.2...v2.37.0
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this MR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box
---
This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MC41MC4wIiwidXBkYXRlZEluVmVyIjoiNDAuNTAuMCIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsiUmVub3ZhdGUgQm90Il19-->
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@ndeloof@thaJeztah@glours