-
Notifications
You must be signed in to change notification settings - Fork 546
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
implement crane estargz
#878
Comments
How's it different than |
I wouldn't ever expect |
I don't know that people will necessarily care about the specific eStargz implementation, and there even may be other versions/options in the future (like stargz and eStargz) |
Maybe multiple modes makes sense for sure. |
Yeah I like that. Is there anything else {e}stargz related we might be able to add? Validating the TOCs match their digests, and actual layer contents? Efficiently fetching a single file with |
🤩 An optimized Probably worth a second issue? |
I'm going to go with |
So this ties into #732 and some other issues a little bit. I want to take some inspiration from skopeo here, but matt's point about digest preservation is salient: containers/skopeo#1102 Some form of The way skopeo handles Any types of transformations like this don't make sense as a scheme, though. I can imagine transformations for stargz, estargz, flatten. Perhaps more. We could also take some inspiration from
We can compose stuff inter-crane invocation by printing intermediate steps to stdout, but it leads to a lot of waste as you end up serializing at each stage, so it would be really nice to have something like this that can take advantage of all the laziness stuff. As an added bonus, @mattmoor gets to write a compiler. Would love to tackle config file manipulation as part of a larger feature while we're in here, as well.
I do
Seems fine to me for demo. I'd be okay with merging it if it's hidden, as well. |
I could see This seems like scope creep to the tenth degree 😅 |
This seems to work:
Right now what I have is super naive, and is basically calling |
This is a hidden command, which roundtrips a remote image to a target image through `tarball.LayerFromOpener(layer.Uncompressed)`. Right now this does nothing to force estargz (still need `GGCR_EXPERIMENT_ESTARGZ=1`) or prioritize files (need `estargz.WithPrioritizedFiles(foo)`), but want to start the convo. Fixes: google#878
This is a hidden command, which roundtrips a remote image to a target image through `tarball.LayerFromOpener(layer.Uncompressed)`. Right now this does nothing to force estargz (still need `GGCR_EXPERIMENT_ESTARGZ=1`) or prioritize files (need `estargz.WithPrioritizedFiles(foo)`), but want to start the convo. Fixes: google#878
Booo |
* Start to flesh out crane optimize. This is a hidden command, which roundtrips a remote image to a target image through `tarball.LayerFromOpener(layer.Uncompressed)`. Right now this does nothing to force estargz (still need `GGCR_EXPERIMENT_ESTARGZ=1`) or prioritize files (need `estargz.WithPrioritizedFiles(foo)`), but want to start the convo. Fixes: #878 * Add --prioritize flag to prioritize files * Fix headers, drop history * Drop unused variable * Add explicit option for estargz * Add a warning comment to crane.Optimize
The intent of this is to be like
crane cp
, but to convert the image to the estargz format.For bonus points, this could take a list of files to prioritize 🤔
cc @imjasonh @jonjohnsonjr for thoughts.
The text was updated successfully, but these errors were encountered: