Concepts

Docker v2 Concepts

Repository and Tags

A Docker v2 repository is a collection of Blobs, Image Manifests, Manifest Lists and Tags. Blobs are the layers that together make up a Docker image. The Image Manifest is the metadata that connects the Blobs together in the correct order, and it can also contain other metadata such as signatures. A Manifest List is a list of Image manifests for one or more platforms. An Image Manifest or Manifest List can be tagged in a repository, and the Tag object is how this is accomplished in Pulp. So in short, a Tag references one Manifest(image or list) by digest same for a Image Manifest which references N Blobs (also by digest).

Note

Tags are a repository property in v1, but are a full Unit in v2.

Note

In Docker v2, Manifest v1 schemas contain a tag field which is not unique per repository. When determining what Manifest is associated with what Tag name, users should rely on the name and manifest_digest fields for Tag Units and not the Manifest tag field. In the Manifest v2 schema, the tag field has been removed. Since 3.0 fields tag and name and removed completely from Manifest model.

Upload

Unfortunately, Docker has not provided a docker save command that can output Docker v2 content. However, if you wish to upload a Docker v2 schema 2 image, then you could use skopeo copy command to create an on-disk representation of the image and later upload it after tarring it. Other option is to push it into Docker’s distribution container, and then synchronize a Pulp repository with the local registry.

Docker v1 Concepts

Repository and Tags

A Docker v1 repository is a collection of Images that can have tags. A Pulp repository likewise is a collection of Docker Images. Tags are a property of the repository and can be modified with the command pulp-admin docker repo update and its --tag option.

Note

Tags are a repository property in v1, but are a full Unit in v2.

Upload

An upload operation potentially includes multiple layers. When doing a docker save, a tarball is created with the requested repository and all of its ancestor layers. When uploading that tarball to Pulp, each layer will be added to the repository as a unit. The tags will also be added to the repository, overwriting any previous tags of the same name.