buildah-manifest - Man Page
Create and manipulate manifest lists and image indexes.
Synopsis
buildah manifest COMMAND [OPTIONS] [ARG...]
Description
The buildah manifest
command provides subcommands which can be used to:
* Create a working Docker manifest list or OCI image index. * Add an entry to a manifest list or image index for a specified image. * Add an entry to an image index for an artifact manifest referring to a file. * Add or update information about an entry in a manifest list or image index. * Delete a working container or an image. * Push a manifest list or image index to a registry or other location.
Subcommands
Command | Man Page | Description |
add | buildah-manifest-add(1) | Add an image or artifact to a manifest list or image index. |
annotate | buildah-manifest-annotate(1) | Add or update information about an image or artifact in a manifest list or image index. |
create | buildah-manifest-create(1) | Create a manifest list or image index. |
exists | buildah-manifest-exists(1) | Check if a manifest list exists in local storage. |
inspect | buildah-manifest-inspect(1) | Display the contents of a manifest list or image index. |
push | buildah-manifest-push(1) | Push a manifest list or image index to a registry or other location. |
remove | buildah-manifest-remove(1) | Remove an image from a manifest list or image index. |
rm | buildah-manifest-rm(1) | Remove manifest list from local storage. |
Examples
Building a multi-arch manifest list from a Containerfile
Assuming the Containerfile
uses RUN
instructions, the host needs a way to execute non-native binaries. Configuring this is beyond the scope of this example. Building a multi-arch manifest list shazam
in parallel across 4-threads can be done like this:
$ platarch=linux/amd64,linux/ppc64le,linux/arm64,linux/s390x $ buildah build --jobs=4 --platform=$platarch --manifest shazam .
Note: The --jobs
argument is optional, and the --manifest
option should be used instead of the-t
or --tag
options.
Assembling a multi-arch manifest from separately built images
Assuming example.com/example/shazam:$arch
images are built separately on other hosts and pushed to the example.com
registry. They may be combined into a manifest list, and pushed using a simple loop:
$ REPO=example.com/example/shazam $ buildah manifest create $REPO:latest $ for IMGTAG in amd64 s390x ppc64le arm64; do buildah manifest add $REPO:latest docker://$REPO:IMGTAG; done $ buildah manifest push --all $REPO:latest
Note: The add
instruction argument order is <manifest>
then <image>
. Also, the --all
push option is required to ensure all contents are pushed, not just the native platform/arch.
Removing and tagging a manifest list before pushing
Special care is needed when removing and pushing manifest lists, as opposed to the contents. You almost always want to use the manifest rm
and manifest push --all
subcommands. For example, a rename and push could be performed like this:
$ buildah tag localhost/shazam example.com/example/shazam $ buildah manifest rm localhost/shazam $ buildah manifest push --all example.com/example/shazam
See Also
buildah(1), buildah-manifest-create(1), buildah-manifest-add(1), buildah-manifest-remove(1), buildah-manifest-annotate(1), buildah-manifest-inspect(1), buildah-manifest-push(1), buildah-manifest-rm(1)
Referenced By
buildah(1), buildah-manifest-add(1), buildah-manifest-annotate(1), buildah-manifest-create(1), buildah-manifest-exists(1), buildah-manifest-inspect(1), buildah-manifest-push(1), buildah-manifest-remove(1), buildah-manifest-rm(1), buildah-push(1).