2.10.2 (2022-03-04)


  • Return a more concise message exception on 500 during image pull when content is missing on the FS. #555

  • Successfully re-upload artifact in case it was previously removed. #595

2.10.1 (2022-02-15)


  • Fixed file descriptor leak during image push. #523

  • Fixed “manifest_id” violates not-null constraint error during sync. #537

  • Fixed error during container image push. #542

2.10.0 (2021-12-14)


  • Enabled Azure storage backend support. #9488

  • Enabled rate_limit option on the remote. Rate limit defines N req/sec per connection. #9607


  • Added validation for the supported manifests and blobs media_types in the push operation. #8303

  • Fixed ORM calls in the content app that were made in async context to use sync_to_async. #9454

  • Fixed a failure during distribution update that occured when unsetting repository_version. #9497

  • Corrected value of Content-Length header for push upload responses. This fixes the upstream prematurely closed connection while reading upstream error that would appear in nginx logs after a push operation. #9516

  • Fixed headers and status codes in the upload/blob responses during image push. #9568

  • Send proper blob content_type header when the blob is served. #9571

  • Fixed a bug that caused container clients to be unable to interact with content stored on S3. #9586

  • Fixed a bug, where permissions were checked against the wrong object type. #9589


2.9.1 (2021-11-23)


2.9.0 (2021-10-06)


  • Switched from condition element to condition_expression for boolean logic evaluation to support latest drf-access-policy. #9092

  • Fix OpenAPI schema view #9258

  • Refactor sync pipeline to fix a race condition with multiple synchronous syncs. #9292

  • Added validation for a repository base path. #9403


2.8.3 (2021-12-09)


2.8.2 (2021-11-23)


2.8.1 (2021-09-07)


  • Refactor sync pipeline to fix a race condition with multiple synchronous syncs. (backported from #9292) #9334

2.8.0 (2021-08-04)


  • Add model resources to allow pulp import export handle pulp_container content units for synced container repositories. #6636

  • Enable reclaim disk space feature for blobs and manifests.This feature is available with pulpcore 3.15+ #9169


  • Use proxy auth credentials when syncing content from a Remote. #9065

Deprecations and Removals

  • Dropped support for Python 3.6 and 3.7. pulp_container now supports Python 3.8+. #9035


2.7.1 (2021-07-21)


  • Use proxy auth credentials when syncing content from a Remote. (backported from #9065) #9067

2.7.0 (2021-07-01)


  • As a user I can update container push repositories. #8313


  • Updated distribution creation policy. #8244

  • Improved error logging on failed image push. #8879

  • Fixed access policy for the container repository repair endpoint. #8884

2.6.0 (2021-05-20)


  • Added ability for users to add a Remote to a Repository that is used by default when syncing. #7795


  • Fixed a bug where image push of the same tag with docker client ended up in the different manifest upload. Updated Range header in the blob upload response so it is inclusive. #8543

  • Add a fix to prevent server errors on push of new repositories including multiple layers. #8565

  • Fixed apache snippet config and removed scheme #8573

  • Do not suggest a time to wait on 429 responses. This allows clients to decide to play nice and increase backoff times. #8576

  • Fix a bug where users with container.namespace_change_containerdistribution couldn’t change distributions. #8618

  • Fixed compution of the digest string during the manifest conversion so it also contains the algorithm. #8629

  • Create and return empty_blob on the fly. #8631

  • Fixed “connection already closed” error in the Registry handler. #8672

Improved Documentation

  • Fixed broken links to API guide #8125


2.5.4 (2021-12-14)


2.5.3 (2021-05-20)


  • Fixed “connection already closed” error in the Registry handler. (backported from #8672) #8697

  • Fixed compution of the digest string during the manifest conversion so it also contains the algorithm. (backported from #8629) #8698

  • Create and return empty_blob on the fly. (backported from #8631) #8699

  • Do not suggest a time to wait on 429 responses. This allows clients to decide to play nice and increase backoff times (Backported from #8576). #8703

2.5.2 (2021-04-19)


2.5.1 (2021-04-13)


  • Fixed a bug where image push of the same tag with docker client ended up in the different manifest upload. Updated Range header in the blob upload response so it is inclusive. (Backported from #8545

2.5.0 (2021-04-08)


  • Updated the catalog endpoint to show only repositories that users have permissions to pull from. #8068

  • Config blob is downloaded always, regardless of the remote’s settings. #8319


  • Wrapped the repository version creation during blob upload commit in a task that will be waited on by issuing 429. #8151

Improved Documentation

  • Released container RBAC from tech-preview. #8527

2.4.0 (2021-03-18)


  • Added pagination to the _catalog and the tags/list endpoint in the registry API. #7974

  • Added a fall back to use BasicAuth if TOKEN_AUTH_DISABLED is set. #8074

  • Added a new API endpoint that allows users to remove an image by a digest from a push repository. #8105

  • Added a namespace_is_username helper to decide whether the namespace matches the username of the requests user. Changed the namespace access_policy to allow users without permissions to create the namespace that matches their username. #8197


  • Fixed the scope field returned by the registry when a user was accessing the catalong endpoint without a token. In addition to that, the field access returned by the token server for the root endpoint was fixed as well. #8045

  • Added missing error code that should be returned in the WWW-Authenticate header. #8046

  • Fixed a bug that caused the registry to fail during the schema conversion when there was not provided the field created_by. #8299

  • Prevent the registry pagination classes to fail if a negative page size is requested. #8318

2.3.1 (2021-02-15)


  • Use get_user_model() to prevent pulp_container from crashing when running alongside other pulp plugins that override the default user authentication models. #8260

2.3.0 (2021-02-08)


  • Added access policy and permission management to container repositories. #7706

  • Added access policy and permission management to the container remotes. #7707

  • Added access policy for ContainerDistributionViewSet and the Registry API. #7937

  • Added access policy and permission management to the container namespaces. #7967

  • Added RBAC to the push repository endpoint. #7968

  • Add RBAC to the repository version endpoints. #8017

  • Made the push and pull permission granting use the ContainerDistribution access policy. #8075

  • Added Owner, Collaborator, and Consumer groups and permissions for Namespaces and Repositories. #8101

  • Added a private flag to mark distributions global read accessability. #8102

  • Added support for tagging and untagging manifests for push repositories. #8104

  • Added RBAC for container content. #8142

  • Made the token expiration time configurable via the setting ‘TOKEN_EXPIRATION_TIME’. #8147

  • Decoupled permissions for registry live api and pulp api. #8153

  • Add description field to the ContainerDistribution. #8168


  • Fixed a bug that caused the registry to advertise an invalid digest of a converted manifest. #7923

  • Fixed the way how the plugin verifies authenticated users in the token authentication. #8057

  • Adjusted the queryset filtering of ContainerDistribution to include private and Namespace permissions. #8206

  • Fixed bug experienced when pulling using docker 20.10 client. #8208

Deprecations and Removals

  • POST and DELETE requests are no longer available for /pulp/api/v3/repositories/container/container-push/. Push repositories are still automatically created via docker/podman push and deleted through container distributions. #8014


2.2.2 (2021-05-26)


2.2.1 (2021-03-18)


2.2.0 (2020-12-09)


  • Added namespaces to group repositories and distributions. #7089

  • Refactored the registry’s push API to not store uploaded chunks in /var/lib/pulp, but rather in the shared storage. #7218


  • Fixed the value of registry_path in a container distribution. #7385

  • Added validation for tags’ names. #7506

  • Fixed Renderer to handle properly Manifest and Blob responses. #7620

  • Updated models fields to not use settings directly. #7728

  • Fixed a bug where Artifacts were missing sha224 checksum after podman push. #7774

Improved Documentation

  • Updated scripts to correctly show the workflows. #7547


2.1.2 (2021-05-04)


2.1.1 (2021-03-08)


2.1.0 (2020-09-23)


  • Fixed the unnecessary double redirect issued for the S3 storage #6826

Improved Documentation

  • Documented how include/exclude_tags options work with mirror=True/False. #7380

2.0.1 (2020-09-08)


  • Fixed bug where users would get 403 response when pulling from the registry running behind an HTTPS reverse proxy. #7462

2.0.0 (2020-08-18)


  • Added ‘exclude_tags’ to support e.g. skipping source containers in sync. #6922

  • Push repositories will be deleted together with their attached distribution. #7172


  • Updated the sync machinery to not store an image manifest as a tag’s artifact #6816

  • Added a validation, that a push repository cannot be distributed by specifying a version. #7012

  • Forbid the REST API methods PATCH and PUT to prevent changes to repositories created via docker/podman push requests #7013

  • Fixed the rendering of errors in the container registry api. #7054

  • Repaired broken registry with TOKEN_AUTH_DISABLED=True #7304

Improved Documentation

  • Updated docs for 2.0 GA. #7317

Deprecations and Removals

  • Renamed ‘whitelist_tags’ to ‘include_tags’. #7070

2.0.0b3 (2020-07-16)


  • Redirected get on Manifest get to the content app to enable schema conversion. Repaired schema conversion to work with django-storage framework. #6824

  • Added ContainerPushRepository type to back writeable container registries. #6825

  • Added ContentRedirectContentGuard to redirect with preauthenticated urls to the content app. #6894

  • Restricted push access to admin user. #6976


  • Refactored token_authentication that now happens in pulpcore-api app #6894

  • Fixed a crash when trying to access content with an unparseable token. #7124

  • Fixed a runtime error which was triggered when a registry client sends an accept header with an inappropriate media type for a manifest and the conversion failed. #7125


2.0.0b2 (2020-06-08)


  • Fixed the client_max_body_size value in the nginx config. #6916

2.0.0b1 (2020-06-03)


  • Added REST APIs for handling docker/podman push. #5027


  • Fixed 500 error when pulling by tag. #6776

  • Ensure that all relations between content models are properly created #6827

  • Auto create repos and distributions for the container push. #6878

  • Fixed not being able to push tags with periods in them. #6884

1.4.2 (2020-07-13)


  • Improved the performance of the synchronization #6940

1.4.1 (2020-06-04)


  • Including requirements.txt on #6890

1.4.0 (2020-05-28)


  • Enable S3 as alternative storage. #4456


  • Fixed webserver snippets config #6628

Improved Documentation

  • Added a new section about using pull secrets #6315


1.3.0 (2020-04-23)


  • Added support for filtering tags using wildcards #6338


1.2.0 (2020-03-05)


  • Enable users to sync content in mirror mode #5771

  • Provide apache and nginx config snippets to be used by the installer. #6292


  • Building an image from a Containerfile no longer requires root access. #5895


1.1.0 (2020-01-22)


  • Let users fetch the list of all distributed repositories via the _catalog endpoint #5772

  • Adds ability to build OCI images from Containerfiles. #5785


  • The schema conversion cannot be applied for manifests with foreign layers #5646

  • Adds operation_summaries for ContainerRepository operations #5956


1.0.0 (2019-12-12)


  • As a user, I can remove all repository container content with [“*”] #5756

  • Enable users to disable the token authentication from the settings #5796

  • As a user I can manage images in OCI format. #5816


  • Allow users to provide fully qualified domain name of a token server with an associated port number #5779

Improved Documentation

  • Add note about access permissions for private and public keys #5778


1.0.0rc1 (2019-11-18)


  • No duplicated content can be present in a repository version. #3541

  • Convert manifests of the format schema 2 to schema 1 #4244

  • Add support for pulling content using token authentication #4938

  • Store whitelisted tags in a list instead of CSV string #5515

  • Make repositories “typed”. Repositories now live at a detail endpoint. Sync is performed by POSTing to {repo_href}/sync/ remote={remote_href}. #5625

  • Added v2s2 to v2s1 converter. #5635


  • Fix using specified proxy for downloads. #5637

Improved Documentation

  • Change the prefix of Pulp services from pulp-* to pulpcore-* #4554

Deprecations and Removals

  • Change _type to pulp_type #5454

  • Change _id, _created, _last_updated, _href to pulp_id, pulp_created, pulp_last_updated, pulp_href #5457

  • Remove “_” from _versions_href, _latest_version_href #5548

  • Removing base field: _type . #5550

  • Sync is no longer available at the {remote_href}/sync/ repository={repo_href} endpoint. Instead, use POST {repo_href}/sync/ remote={remote_href}.

    Creating / listing / editing / deleting Container repositories is now performed on /pulp/api/v3/repositories/container/container/ instead of /pulp/api/v3/repositories/. Only Container content can be present in a Container repository, and only a Container repository can hold Container content. #5625


4.0.0b7 (2019-10-02)


  • Fix a bug that allowed arbitrary url prefixes for custom endpoints. #5486

  • Add Docker-Distribution-API-Version header among response headers. #5527


4.0.0b6 (2019-09-05)


  • Add endpoint to recursively copy manifests from a source repository to a destination repository. #3403

  • Add endpoint to recursively add docker content to a repository. #3405

  • As a user I can sync from a docker repo published by Pulp2/Pulp3. #4737

  • Add support for tagging and untagging manifests via an additional endpoint #4934

  • Add endpoint for copying all tags from a source repository, or specific tags by name. #4947

  • Add ability to filter Manifests and ManifestTags by media_type and digest #5033

  • Add ability to filter Manifests, ManifestTags and Blobs by multiple media_types #5157

  • Add endpoint to recursively remove docker content from a repository. #5179


  • Allow Accept header to send multiple values. #5211

  • Populate ManifestListManifest thru table during sync. #5235

  • Fixed a problem where repeated syncs created invalid orphaned tags. #5252


4.0.0b5 (2019-07-04)


  • Add ‘Docker-Content-Digest’ header to the response headers. #4646

  • Allow docker remote whitelist_tags to be unset to null. #5017

  • Remove schema1 manifest signature when calculating its digest. #5037

Improved Documentation

  • Switch to using towncrier for better release notes. #4875

  • Add an example to the whitelist_tag help text #4994

  • Add list of features to the docker landing page. #5030



  • Enable sync from registries that use basic auth or have private repos

  • Enable on_demand or streamed sync

  • Enable whitelist tags specification when syncing

  • Compatibility with pulpcore-plugin-0.1.0rc2

Comprehensive list of changes and bugfixes for beta 4.


  • Enable sync from gcr and quay registries

  • Enable support to handle pagination for tags/list endpoint during sync

  • Enable support to manage a docker image that has manifest schema v2s1

  • Enable docker distribution to serve directly latest repository version

Comprehensive list of changes and bugfixes for beta 3.


  • Compatibility with pulpcore-plugin-0.1.0rc1

  • Performance improvements and bug fixes

  • Add support for syncing repo with foreign layers

  • Change sync pipeline to use Futures to handle nested content

  • Make Docker distributions asyncronous

  • Add support to create publication directly


  • Add support for basic sync of a docker repo form a V2Registry

  • Add support for docker/podman pull from a docker distbution served by Pulp