Gao Xiang <hsiangkao@xxxxxxxxxxxxxxxxx> writes:
Agreed, I hope you guys could actually sit down and evaluate a proper
solution on the next OCI v2, currently I know there are:
- Composefs
- (e)stargz https://github.com/containerd/stargz-snapshotter
- Nydus https://github.com/containerd/nydus-snapshotter
- OverlayBD https://github.com/containerd/accelerated-container-image
- SOCI https://github.com/awslabs/soci-snapshotter
- Tarfs
- (maybe even more..)
Honestly, I do think OSTree/Composefs is the best approach for now for
deduplication and page cache sharing (due to kernel limitation of page
cache sharing and overlayfs copyup limitation). I'm too tired of
container image stuffs honestly. Too much unnecessary manpower waste.
for a file-based storage model, I am not sure a new format would really
buy us much or it can be significantly different.
Without a proper support from the kernel, a new format would still need
to create the layout overlay expects, so it won't be much different than
what we have now.
The current OCI format, with some tweaks like (e)stargz or zstd:chunked,
already make its content addressable and a client can retrieve only the
subset of the files that are needed. At the same time we maintain the
simplicity of a tarball and it won't break existing clients.
IMO, the most interesting problem is how to store these images locally
and how the kernel can help with that.
The idea behind composefs is to replace the existing storage model used
for overlay, where each layer has its own directory, with a single
directory where all the files are stored by their checksum. The
expected layout then is recreated at runtime.