Skip to main content

Components and Assets in Docker

Docker Images, Tags, Manifests, and Layers

Components in a Docker repository are formally called "Docker images." An image contains a single asset: a tagged manifest file.

  • A manifest can either reference a set of layers that make up an image or a set of manifests that are not associated with a component. A tagged manifest is an asset that represents a component.

    See the Docker documentation on manifests

  • A Docker tag is an alias pointing at a manifest (i.e., the name attribute of the component).

  • A layer is unique and only stored once in a repository; however, many manifests are able to reference one layer. A Docker layer, for example, could be a specific operating system referenced by multiple Docker images.

Tags, manifests, and layers are each assets inside a blob store.

Docker Image (Component) Space Consumption

Blob store space is almost entirely consumed by Docker layers while manifests and tags consume comparitively little space.

To view the size of a specific asset via the Nexus Repository user interface, do the following:

  1. Navigate to Search → Docker

  2. Select a specific image (component); assets within that component display in a list.

  3. Select a specific asset to view its summary. The file size field displays this asset's size.

A crude method to understand the total physical size of all manifest layers is to download the image manifest file and add up all the individual sizes for the layers inside the manifest. This will roughly total to amount of disk space needed to store that single image on the Nexus Repository side. However, since images share layers, it would not be accurate to simply add all of these image manifest totals up and conclude that is how much storage a Nexus Repository blob store needs. The space used could overlap shared layers of other images.

Note

An image manifest asset lists each layer size inside the manifest file. It is normal that the total resulting from adding up all listed sizes in the manifests still not match what docker image ls prints after an image is pulled from Docker.

Note

Docker V2 API implements resumable uploads. Docker uploads can be abandoned through normal use and this can leave large files dangling in temporary blob store files.