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 the asset that represents a component. (See Docker's 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 individual assets or blobs 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:
- Navigate to Search → Docker
- Select a specific image (component); assets within that component display in a list.
- 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.
docker image lsprints after an image is pulled from Docker.