Commit e9e1b585 authored by Sam Thursfield's avatar Sam Thursfield
Browse files

Add Docker source plugin

This is for pulling binaries from Docker registries such as
<https://hub.docker.com>.

It adds an external dependency on the 'requests' library.

The source is working fine against Docker Hub itself,
and comes with an integration test.

A Docker Registry is basically a content-addressed blob store,
and we take advantage of this to verify cached data. If the
manifest file is saved but its content does not match its digest,
we raise an error like this:

    Manifest /home/sam/cache/buildstream/sources/docker/sha256:4b8ffaaa896d40622ac10dc6662204f429f1c8c5714be62a6493a7895f664098.manifest.json
    is corrupt; Got content hash of sha256:22e88c7d6da9b73fbb515ed6a8f6d133c680527a799e3069ca7ce346d90649b2

Similar checks are done for the blobs (image layers).

Only the "Image Manifest V 2, Schema 2" format[1] is supported.
This seems to be unsupported by <https://quay.io>, so the plugin
doesn't work with that registry at present.

I haven't tested with any other Docker Registry instances.

1. https://docs.docker.com/registry/spec/manifest-v2-2/
parent db543278
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment