Skip to content

Conversation

chantra
Copy link

@chantra chantra commented Feb 9, 2024

Image like s390x/ubuntu uses OCI Image Manifest, which per
https://github.com/opencontainers/image-spec/blob/v1.0.1/manifest.md
is very similar to vnd.docker.distribution.manifest.v2.

Add a test to confirm we can deserialize an OCI Image Manifest as a ManifestSchema2Spec.

Also add a test to confirm that we can now fetch the manifest from docker.io.
Previously it would fail with MANIFEST_UNKNOWN.

This is built on top of #260 . I stacked it because it would otherwise have merge conflicts due to the tests.

@chantra
Copy link
Author

chantra commented Feb 9, 2024

As a follow up, I am happy to revive #244 if @luizribeiro can't get to it.

Previously, a generic error would be returned:
```
Error: unexpected HTTP status 404 Not Found
```

This does not convey much information as to what happens.
On the current version of dkregistry, one would hit this when trying to
access s390x/ubuntu on registry-1.docker.io.

This change specializes the error to surface more information as to why the
error is happening as described in the OCI Distribution Specification:
https://github.com/opencontainers/distribution-spec/blob/main/spec.md#error-codes

In this specific case, the error would look like:
```
Error: Api Error: ((MANIFEST_UNKNOWN), message: OCI manifest found, but accept header does not support OCI manifests)

Caused by:
    ((MANIFEST_UNKNOWN), message: OCI manifest found, but accept header does not support OCI manifests)
```

which clearly highlight that dkregistry does not support OCI manifest.
Image like s390x/ubuntu uses OCI Image Manifest, which per
https://github.com/opencontainers/image-spec/blob/v1.0.1/manifest.md
is very similar to vnd.docker.distribution.manifest.v2.

Add a test to confirm we can deserialize an OCI Image Manifest as a ManifestSchema2Spec.

Also add a test to confirm that we can now fetch the manifest from docker.io.
Previously it would fail with MANIFEST_UNKNOWN.
OCI Image Index (https://github.com/opencontainers/image-spec/blob/v1.0.1/image-index.md)
is similar to vnd.docker.distribution.manifest.list.v2

This revives camallo#244 originally created by @luizribeiro

A testing client could pull koenkk/zigbee2mqtt:latest with this change.

Fixes camallo#243
@chantra chantra force-pushed the support_oci_manifest branch from 0a337d4 to 035f1a5 Compare February 10, 2024 04:25
@chantra
Copy link
Author

chantra commented Feb 13, 2024

@PratikMahajan if you could look into this one too, that would be great.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants