Update with new recipe for v2s1 manifest upload
skopeo added support for working with schema1.
now with option `--format` it is possible to specify which schema version s1 or s1 is wanted
--format MANIFEST TYPE, -f MANIFEST TYPE MANIFEST TYPE (oci, v2s1, or v2s2) to use when saving image to directory using the 'dir:' transport (default is manifest type of source)
We need to update our recipes and mention the possibility of upload into Pulp v2s1.
It should be a purely doc change, code should be already prepared and functional for v2s1 upload.
I also think that we need to add a note int docs, and mention the case of sync FROM Pulp that it is necessary and it is an enforcement for user to upload v2s1 along with v2s2 for compatibility reasons or we'd need to twist pulp_docker sync logic. I am still not decided on which approach we shall take.
#2 Updated by email@example.com over 3 years ago
In my opinion, requiring a user to upload both schema1 and schema2 images is a horrible user experience.
I would prefer we mimic the Docker registry behavior here.
I think everything should be internally stored as Schema 2. The only downside, aside from having to write the on-the-fly conversion from schema 2 to schema 1, is documented on that page: a pre-1.10 Docker engine fetching an image manifest by digest would fail. Given the age of Docker 1.10 (almost 2 years according to https://docs.docker.com/release-notes/docker-engine/#1100-2016-02-04) I think that's acceptable.
So my proposal:
- write the on-the-fly conversion from schema2 to schema1
- a manifest import will convert it to schema2 if schema1 is presented. That will cover both the direct upload and the sync case
#3 Updated by firstname.lastname@example.org over 3 years ago
I thought some more about this, and wanted to clarify the on-the-fly aspect.
In general we want to minimize the dynamic aspect if possible, so I don't think the implementation belongs in crane.
I think that the distributor, at publish time, should take the Schema 2 image manifests and publish them both as Schema 1 and as Schema 2.
Crane would pick the right one based on the presence of the extra headers.
#4 Updated by email@example.com over 3 years ago
Pulp treats docker manifetsts like any other content unit. When a user uploads a schema1 manifest, the user expects to retrieve a schema1 manifest. When a user uploads a schema2 manifest, the user expect to retrieve a schema2 manifest. The fact that Pulp expects both schema1 and schema2 manifests to be present in the remote registry during a sync is a bug. We should file that as a separate issue. We should just add documentation stating that if the Pulp administrator has not uploaded or synced schema1 manifests, clients older than 1.10 will receive 404s when retrieving content.
Please register to edit this issue