Pulp Container Roadmap » History » Revision 20
Revision 19 (ipanova@redhat.com, 08/15/2019 04:28 PM) → Revision 20/34 (ipanova@redhat.com, 08/15/2019 04:32 PM)
# Pulp Docker Roadmap ~~~ This is a living document that is moving towards a long term plan to develop Docker plugin for Pulp 3.0 and beyond. ~~~ ~~~ With Pulp as a docker registry you can: - Mirror container image repositories hosted on Docker-hub, Google Container Registry, Quay.io, etc - Reduce disk use space by mirroring container image repositories using the "on demand" policy. An image is only downloaded once it has been requested by a client. - Use local filesystem or an object storage store such as S3 to host all the container images. - Curate container images by whitelisting what is mirrored from an external repository. - Curate container images by creating repository versions with a specific set of images. - Create versioned repositories that can be promoted or rolled back with a single operation. Pulp also has: - tasking system that can be used to perform a variety of specialized work such as analysis of content. e.g. integration with clair-scanner - a large community of users - a commuity of plugin developers ~~~ <span style="color: #458b74;">green</span> h2. Supported Content Types ### MVP - <span style="color: #458b74;">Image manifest schema2 and schema1</span> - {color: #458b74} Manifest list - {color: #458b74} Blob - {color: #458b74} Tag ## Pulp Docker Plugin Use Cases ### MVP ##### Sync - <span style="color: #458b74;">As a user I can sync docker repo from docker registry</span> <!-- end list --> - {color: #458b74} assumes registry is compliant v2 api specs - {color: #458b74} with token based auth - {color: #458b74} specify \`feed\` and \`upstream_name\` <!-- end list --> - {color: #458b74} As a user I can sync a registry by whitelisting tags ( Filtered Sync) - {color: #458b74} As a user i can lazily fetch docker repo by specifying the download policy - {color: #458b74} As a user I can sync a private docker repo from docker registry - <span style="color: #458b74;">As a user I can sync docker repo from docker registry with basic auth</span> \*{color: \*%{color: #458b74} As a user I can sync from a docker repo published by Pulp ( pulp2pulp3 and pulp3pulp3 sync) - {color: #458b74} As a user, I can mirror the content of a remote repository with an additive behaviour, so content is never removed locally. - As a user I can validate the size and the checksum of downloaded content against metadata ( #2625 #2624) **NOTE**: dropping enable_v1, enable_v2, mask_id options ##### Publish - {color: #458b74} As a user I can distribute docker content - {color: #458b74} As a user, I can specify publish_directory( i.e base_path) from which the content will be served( provided by pulp_core) - As a user, I can specify repo-registry-id that will be used in the docker registry - As a user i can specify redirect-url which will lead to the location the content is stored - As a user I can specify whether i want to convert docker image schema2 to schema1( aka schema convertor, for older clients support) - As a user I cam pull from docker registry that has auth mechanish \* token auth \* basic auth As a result the above section should enable clients to perform \`docker/podman pull\` ##### Addition of the content to the repo with deps - As a user I can add Manifest and all Blobs it references to the destination repo - As a user I can add Manifest List and all Manifests and Blobs it references to the destination repo - As a user I can add Tag and all its' associated content it references to the destination repo **NOTE** dropping protected option ### Post-MVP 4.1+ ##### Upload Artifacts( units are not created): - As a user I can upload \* Manifest Lists \* Image Manifests \* Blobs \* (no upload of tags) ##### Create Content Units from uploaded Artifacts( MVP docker content types) ##### Multi-unit Upload from Tarball: - As a user I can upload a skopeo generated tarball that contains one or many content units ##### Enable v2/catalog endpoint ##### Sync - As a user, I can sync from a repository with Forein Layers and save them in pulp for disconnected env. - As a user, I can exactly mirror the content of a remote repository( mirror on sync) ##### Publish - As a user I can distribute docker content using a remote server ( rsync exporter) ##### Custom Live API (4.1+)) - some dedicated storage for the metadata files ( remove the need of in-memory database) - enable docker push functionality or provide this as a separate plugin/package ## What will be dropped in Pulp3 - v1 API support. In Pulp3 we'll have just v2 api registry and corresponding v2 content types - v1/search. There is no v2/search so \`docker search\` for v2 content will not work. If upstream docker will add support for v2 docker content search by the time we deliver docker plugin for pulp3 we will reconsider and include the endpoint. - content protection. In Pulp3 docker repos will not support entitlement cert protection. ( option \`protected\` is dropped) - export content into a tar file. It was possible to do so for v1 content. - Crane is not longer used as a registry API. Pulp 3's ability to serve custom live APIs has made it possible for Crane's feature set to be incorporated into the pulp_docker plugin