.nh .TH buildah-manifest "1" "September 2019" "buildah" .SH NAME .PP buildah-manifest - Create and manipulate manifest lists and image indexes. .SH SYNOPSIS .PP buildah manifest COMMAND [OPTIONS] [ARG...] .SH DESCRIPTION .PP The \fB\fCbuildah manifest\fR command provides subcommands which can be used to: .PP .RS .nf * 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 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. .fi .RE .SH SUBCOMMANDS .TS allbox; l l l l l l . \fB\fCCommand\fR \fB\fCMan Page\fR \fB\fCDescription\fR add buildah-manifest-add(1) T{ Add an image to a manifest list or image index. T} annotate buildah-manifest-annotate(1) T{ Add or update information about an image in a manifest list or image index. T} create buildah-manifest-create(1) T{ Create a manifest list or image index. T} exists buildah-manifest-exists(1) T{ Check if a manifest list exists in local storage. T} inspect buildah-manifest-inspect(1) T{ Display the contents of a manifest list or image index. T} push buildah-manifest-push(1) T{ Push a manifest list or image index to a registry or other location. T} remove buildah-manifest-remove(1) T{ Remove an image from a manifest list or image index. T} rm buildah-manifest-rm(1) T{ Remove manifest list from local storage. T} .TE .SH EXAMPLES .SS Building a multi-arch manifest list from a Containerfile .PP Assuming the \fB\fCContainerfile\fR uses \fB\fCRUN\fR 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 \fB\fCshazam\fR in parallel across 4-threads can be done like this: .PP .RS .nf $ platarch=linux/amd64,linux/ppc64le,linux/arm64,linux/s390x $ buildah build --jobs=4 --platform=$platarch --manifest shazam . .fi .RE .PP \fBNote:\fP The \fB\fC--jobs\fR argument is optional, and the \fB\fC-t\fR or \fB\fC--tag\fR option should \fInot\fP be used. .SS Assembling a multi-arch manifest from separately built images .PP Assuming \fB\fCexample.com/example/shazam:$arch\fR images are built separately on other hosts and pushed to the \fB\fCexample.com\fR registry. They may be combined into a manifest list, and pushed using a simple loop: .PP .RS .nf $ 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 .fi .RE .PP \fBNote:\fP The \fB\fCadd\fR instruction argument order is \fB\fC\fR then \fB\fC\fR\&. Also, the \fB\fC--all\fR push option is required to ensure all contents are pushed, not just the native platform/arch. .SS Removing and tagging a manifest list before pushing .PP Special care is needed when removing and pushing manifest lists, as opposed to the contents. You almost always want to use the \fB\fCmanifest rm\fR and \fB\fCmanifest push --all\fR subcommands. For example, a rename and push could be performed like this: .PP .RS .nf $ buildah tag localhost/shazam example.com/example/shazam $ buildah manifest rm localhost/shazam $ buildah manifest push --all example.com/example/shazam .fi .RE .SH SEE ALSO .PP 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)