Concepts¶
Docker v2 Concepts¶
Repository and Tags¶
A Docker v2 repository is a collection of Blobs, Manifests, and Tags. Blobs are the layers that together make up a Docker image. The 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 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 (by digest) and a Manifest 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.
Upload¶
Unfortunately, Docker has not provided a docker save
command that can
output Docker v2 content. Due to this, Pulp does not support uploading Docker
v2 content at this time. If you wish to add your own custom v2 content into
Pulp, you will need 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.