Including Docker Images in a Release Bundle

JFrog Distribution Documentation

Products
JFrog Distribution
Content Type
User Guide
ft:sourceType
Paligo

To include Docker image in the Release Bundle, it is sufficient to specify query criteria that will match the manifest.json of the desired docker image. Distribution will include all the Docker layers of the Docker image associated with that manifest.json file.

For example, we have a Docker image of a PostgreSQL version 11.1 in a Docker repository called docker-local.

The content of the repository has the following hierarchy:

The manifest.json file includes the following property:

docker.manifest.digest = sha256:acb7f2b2e9bd560a32c0ba01991870f56f89deeff5f3224bc50aac2a98b7f73e

All the other files under docker-local/postgres/11.1 are the layers composing this specific image.

Docker digest

The “digest” parameter is designed as an opaque parameter to support verification of a successful transfer. For example, an HTTP URI parameter might be as follows:

sha256:6c3c624b58dbbcd3c0dd82b4c53f04194d1247c6eebdaab7c610cf7d66709b3b

Given this parameter, the registry will verify that the provided content does match this digest.

To include all the artifacts in the image (manifest and layers) it is sufficient to specify a query criteria that will match the manifest.json of the desired Docker image:

Screen Shot 2020-05-18 at 12.26.28.png

AQL example

items.find({
    "$and": [
        {
            "$or": [
                {
                    "repo": {
                        "$eq": "docker-local"
                    }
                }
            ]
        },
        {
            "$or": [
                {
                    "@docker.manifest.digest": "sha256:acb7f2b2e9bd560a32c0ba01991870f56f89deeff5f3224bc50aac2a98b7f73e"
                }
            ]
        }
    ]
})