Discussion: "Diff" Pulls?
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 25/100
- Issue type
- Feature
- Clarity
- Needs clarification
- Activity status
- Stale
Research direction
No files, tests, or entry points are named. Start by reviewing the distribution specification and the three-comment discussion around image pulls and manifests. Done means reaching a clear decision on whether clients can advertise an older image and receive an immutable server-provided diff with manifest-hash verification and full-pull fallback.
Written by the indexing model from the issue text.
Description
Should we consider "image diffs" as part of the spec?
For most clients pulling an image, they have a very recent, slightly older version of the image. Some clients, such as those in "edge" deployments, may have very constrained WAN bandwidth where it's important to maximize transmission efficiency. In most CI/CD setups, the actual binary differences between one image version and the next may be very small relative to the overall image size.
Consequently it would seem advantageous for:
- A client to be able to advertise that it already has a given, older version when performing a pull request.
- The server, if in possession of the older AND newer version, to be able to vend a diff to the client.
After the client receives and applies the diff, the client could use the hash from the manifest to verify that the "patched" image is indeed identical to the new image. If a discrepancy is noted (e.g. because the diff was corrupted or something went wrong with the patching process), the client could log the error and fall back to the current method of just doing a full pull of the new image.
Note that a given diff from Version $X to Version $Y is cacheable and immutable.
Tools like bsdiff & bspatch or similar could be used to actually perform the image diffing and patching.
Questions:
- Does the problem formulation make sense?
- While thoughtful/custom packaging of stacked image layers could allow a clever builder & client to effectively perform this function without needing to modify the repository protocol or implementation, this would severely constrain the set of containers for which this efficient distribution could be deployed. So the hope would be to have a solution that most clients could use with most containers and most repositories to be able to efficiently update their images.
- Dominant language
- Go
- Stars
- 1.1k
- Forks
- 260
- Avg merge
- 3d 23h
- Merged PRs (30d)
- 1
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from opencontainers/distribution-spec
-
Difficulty 1/5 Under an hour Newbie friendliness 65/100
-
Difficulty 1/5 Under an hour Newbie friendliness 68/100
-
Difficulty 5/5 Over a week Newbie friendliness 35/100
opencontainers/distribution-spec#621 · 3 comments ·
-
Difficulty 5/5 Over a week Newbie friendliness 42/100
opencontainers/distribution-spec#608 · 4 comments ·
-
Difficulty 5/5 Over a week Newbie friendliness 30/100
opencontainers/distribution-spec#596 · 1 comment ·
All issues in opencontainers/distribution-spec
Similar issues
-
optimization optimization:agents-md-curator
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
githubnext/gh-aw-cao#13143 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
blinklabs-io/bursa#904 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
yanet-platform/ipfw-go#129 ·
-
bug confmap/provider/googlesecretmanagerprovider needs triage
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
open-telemetry/opentelemetry-collector-contrib#51273 · 2 comments ·
-
bug: AI Gateway client filter lists "Unknown" twice when NULL and literal Unknown clients coexist Openbug
Difficulty 2/5 1-3 hours Newbie friendliness 90/100