Giter Site home page Giter Site logo

Comments (10)

shizhMSFT avatar shizhMSFT commented on May 19, 2024

As Transmitting Thick Bundles mentioned, you may decompose thick bundles for the purpose of efficiently transmitting them.

from oras.

shizhMSFT avatar shizhMSFT commented on May 19, 2024

For thin bundles, it's just a bundle.json with image references. For referenced docker images, you can do normal docker push to a registry or the same repository with different tags. Currently, oras does not support manifest list well.

from oras.

radu-matei avatar radu-matei commented on May 19, 2024

Ok, thanks a lot for the response here.

I'm able to push the images separately and reference them, but it would be really cool to see support for an OCI index.
Is there anything specifically blocking? How could I help?

See radu-matei/coras#8 for more context.

Thanks!

from oras.

shizhMSFT avatar shizhMSFT commented on May 19, 2024

A manifest list should contain manifest only. Also, oras does support upload multiple files in a single manifest.

from oras.

jdolitsky avatar jdolitsky commented on May 19, 2024

@radu-matei @shizhMSFT just checking in, is there any request for new functionality here? It sounds like the original ask is possible?

from oras.

radu-matei avatar radu-matei commented on May 19, 2024

Continuing on the background about CNAB - when we push a bundle using oras, we might also want to push the container images referenced in the bundle.
However, regardless of how many other images are in the same repository (under different tags), the resulting manifest created by oras only contains the layer pointing to the bundle file.

While functionally it has no impact, it would be great for the resulting manifest to contain both the bundle and other image manifests - so oras would generate an OCI index, as opposed to a single image config.

from oras.

shizhMSFT avatar shizhMSFT commented on May 19, 2024

According to the OCI Image Index Specification, the image index is a higher-level manifest which points to specific image manifests. Therefore, it is not a good idea to store non-manifest in a manifest list.

I understand that having everything in a single tag will be grateful. Here is my proposal to your problem.


A thin CNAB is a bundle.json file. It can be pushed by oras as a single manifest. All its referenced images can be pushed by docker or other tools as individual manifests.

A fat CNAB can be viewed as a collection of the thin CNAB and its referenced images. Naturally, a fat CNAB is a signel manifest list / index of the manifests of the thin CNAB and its referenced images.

manifest index (fat CNAB)
 |- oras manifest (thin CNAB)
 |    |- config
 |    |- layer (bundle.json)
 |- image manifest A
 |- image manifest B
 |- image manifest C

Overall, the feature we need is to combine multiple manifests to be a single manifest index. However, it's more like a manifest managment feature other than a feature of oras.

@jdolitsky @sajayantony Any comments?

from oras.

sajayantony avatar sajayantony commented on May 19, 2024

The docker manifest create command handles building of manifest lists. Enabling ORAS to support manifest list does make sense if it fulfills CNABs spec.
The OCI Index may be considered different from a manifest list and by definition is an index of things rather than a list of manifest. I think that’s what CNAB is might be going for and I don’t know the Spec enough to comment.
The one interesting thing to consider is that CNAB pull push should consider moving all elements of the index unlike docker pull push which only gets a single matching architecture.

from oras.

SteveLasker avatar SteveLasker commented on May 19, 2024

@radu-matei, I believe the ask here is to add Index support?
That will come as part of the Notary v2 work

from oras.

shizhMSFT avatar shizhMSFT commented on May 19, 2024

Closing as the issue content seems to be outdated. Please re-open if needed.

from oras.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.