Skip to content

Conversation

@malt3
Copy link

@malt3 malt3 commented Nov 28, 2025

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation update

Motivation and Context

This command can be used to interact with the content store XPC via simple commands. Since many container tools are written in Go, it's not easy to interact with the XPC service from other tools. Go has good support for unix domain sockets, but Mach ports (and XPC) are another story.

The content store is very useful to enable incremental image loading. The closest alternative ("container image load") requires materialization of all blobs in a tar file. With the content store, we can check which blobs are already available and only load missing ones. This will enable faster development workflows in tools like rules_img: https://github.com/bazel-contrib/rules_img.

A similar move is being made in Docker. The containerd content store used to be limited to the containerd socket. This upstream issue will expose the containerd content store directly via Docker: moby/moby#44369

Testing

  • Tested locally
  • Added/updated tests
  • Added/updated docs

@malt3
Copy link
Author

malt3 commented Nov 28, 2025

Marked as draft for now. Please let me know if this makes sense and what kind of tests you would like to see!

@malt3 malt3 force-pushed the content_subcommand branch from 2eab672 to 2f04d69 Compare December 2, 2025 08:22
@malt3 malt3 marked this pull request as ready for review December 2, 2025 08:23
This command can be used to interact with the content store XPC via simple commands.
Since many container tools are written in Go, it's not easy to interact with the XPC service from other tools.
Go has good support for unix domain sockets, but Mach ports (and XPC) are another story.

The content store is very useful to enable incremental image loading.
The closest alternative ("container image load") requires materialization of all blobs in a tar file.
With the content store, we can check which blobs are already available, and only load missing ones.
This will enable faster development workflows in tools like rules_img: https://github.com/bazel-contrib/rules_img.

A similar move is being made in Docker. The containerd content store used to be limited to the containerd socket.
This upstream issue will expose the containerd content store directly via Docker: moby/moby#44369
@malt3 malt3 force-pushed the content_subcommand branch from 2f04d69 to 5b7b0b1 Compare December 7, 2025 22:36
Sign up for free to 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.

1 participant