Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
buildah-commit(1)	     General Commands Manual	       buildah-commit(1)

NAME
     buildah-commit - Create an image from a working container.

SYNOPSIS
     buildah commit [options] container [image]

DESCRIPTION
     Writes  a new image using the specified container's read-write layer and if
     it is based on an image, the layers of that image.  If image does not begin
     with a registry name component, localhost will be added to  the  name.   If
     image  is	not provided, the image will have no name.  When an image has no
     name, the buildah images command will display <none> in the REPOSITORY  and
     TAG columns.

     The  image  value supports all transports from containers-transports(5). If
     no transport is specified, the  containers-storage  (i.e.,  local	storage)
     transport is used.

RETURN VALUE
     The  image  ID  of the image that was created.  On error, 1 is returned and
     errno is returned.

OPTIONS
     --add-file source[:destination]

     Read the contents of the file source and add it to the committed image as a
     file at destination.  If destination is not specified, the path  of  source
     will  be  used.  The new file will be owned by UID 0, GID 0, have 0644 per-
     missions, and be given the timestamp specified to the --timestamp option if
     it is specified.  This option can be specified multiple times.

     --annotation annotation[=value]

     Add an image annotation (e.g. annotation=value) to the image metadata.  Can
     be  used multiple times.  If annotation is named, but neither = nor a value
     is provided, then the annotation is set to an empty value.

     Note: this information is not present in Docker image  formats,  so  it  is
     discarded when writing images in Docker formats.

     --authfile path

     Path  of  the  authentication  file. Default is ${XDG_RUNTIME_DIR}/contain-
     ers/auth.json. See containers-auth.json(5) for more information. This  file
     is created using buildah login.

     If the authorization state is not found there, $HOME/.docker/config.json is
     checked, which is set using docker login.

     Note:  You can also override the default path of the authentication file by
     setting  the   REGISTRY_AUTH_FILE	 environment   variable.   export   REG-
     ISTRY_AUTH_FILE=path

     --cert-dir path

     Use certificates at path (*.crt, *.cert, *.key) to connect to the registry.
     The default certificates directory is /etc/containers/certs.d.

     --change, -c "INSTRUCTION"

     Apply the change to the committed image that would have been made if it had
     been  built using a Containerfile which included the specified instruction.
     This option can be specified multiple times.

     --config filename

     Read a JSON-encoded version of an image configuration object from the spec-
     ified file, and merge the values from it with the configuration of the  im-
     age being committed.

     --created-annotation

     Add  an image annotation (see also --annotation) to the image metadata set-
     ting "org.opencontainers.image.created" to the current time, or to the dat-
     estamp specified to the --source-date-epoch or --timestamp flag, if  either
     was  used.  If false, no such annotation will be present in the written im-
     age.

     Note: this information is not present in Docker image  formats,  so  it  is
     discarded when writing images in Docker formats.

     --creds creds

     The  [username[:password]]  to use to authenticate with the registry if re-
     quired.  If one or both values are not supplied, a command line prompt will
     appear and the value can be entered.  The password is entered without echo.

     --cw options

     Produce an image suitable for use as a confidential workload running  in  a
     trusted  execution  environment (TEE) using krun (i.e., crun built with the
     libkrun feature enabled and invoked as krun).  Instead of the  conventional
     contents,	the  root filesystem of the image will contain an encrypted disk
     image and configuration information for krun.

     The value for options is a comma-separated list of key=value pairs, supply-
     ing configuration information which is needed for producing the  additional
     data which will be included in the container image.

     Recognized keys are:

     attestation_url:  The  location of a key broker / attestation server.  If a
     value is specified, the new image's workload ID, along with the  passphrase
     used to encrypt the disk image, will be registered with the server, and the
     server's location will be stored in the container image.  At run-time, krun
     is  expected  to  contact	the  server to retrieve the passphrase using the
     workload ID, which is also stored in the container image.	If no  value  is
     specified, a passphrase value must be specified.

     cpus:  The number of virtual CPUs which the image expects to be run with at
     run-time.	If not specified, a default value will be supplied.

     firmware_library: The location of the libkrunfw-sev shared library.  If not
     specified, buildah checks for its presence in a number of hard-coded  loca-
     tions.

     memory: The amount of memory which the image expects to be run with at run-
     time,  as a number of megabytes.  If not specified, a default value will be
     supplied.

     passphrase: The passphrase to use to encrypt the disk image which	will  be
     included in the container image.  If no value is specified, but an attesta-
     tion_url  value is specified, a randomly-generated passphrase will be used.
     The authors recommend setting an attestation_url but not a passphrase.

     slop: Extra space to allocate for the disk image compared to  the	size  of
     the container image's contents, expressed either as a percentage (..%) or a
     size  value (bytes, or larger units if suffixes like KB or MB are present),
     or a sum of two or more such specifications separated by "+".  If not spec-
     ified, buildah guesses that 25%  more  space  than  the  contents	will  be
     enough,  but  this  option  is provided in case its guess is wrong.  If the
     specified or computed size is less than 10 megabytes, it will be  increased
     to 10 megabytes.

     type:  The  type  of  trusted  execution  environment (TEE) which the image
     should be marked for use with.  Accepted values are "SEV" (AMD  Secure  En-
     crypted  Virtualization  - Encrypted State) and "SNP" (AMD Secure Encrypted
     Virtualization - Secure Nested Paging).   If  not	specified,  defaults  to
     "SNP".

     workload_id:  A workload identifier which will be recorded in the container
     image, to be used at run-time for retrieving the passphrase which was  used
     to  encrypt  the disk image.  If not specified, a semi-random value will be
     derived from the base image's image ID.

     --disable-compression, -D

     Don't compress filesystem layers when building the image unless it  is  re-
     quired  by  the location where the image is being written.  This is the de-
     fault setting, because image layers are compressed automatically when  they
     are  pushed  to registries, and images being written to local storage would
     only need to be decompressed again to be stored.  Compression can be forced
     in all cases by specifying --disable-compression=false.

     --encrypt-layer layer(s)

     Layer(s) to encrypt: 0-indexed layer indices with support for negative  in-
     dexing  (e.g.  0 is the first layer, -1 is the last layer). If not defined,
     will encrypt all layers if encryption-key flag is specified.

     --encryption-key key

     The [protocol:keyfile] specifies the encryption protocol, which can be  JWE
     (RFC7516), PGP (RFC4880), and PKCS7 (RFC2315) and the key material required
     for image encryption. For instance, jwe:/path/to/key.pem or pgp:admin@exam-
     ple.com or pkcs7:/path/to/x509-file.

     --format, -f [oci | docker]

     Control  the  format for the image manifest and configuration data.  Recog-
     nized formats include oci (OCI image-spec v1.0,  the  default)  and  docker
     (version 2, using schema format 2 for the manifest).

     Note:  You can also override the default format by setting the BUILDAH_FOR-
     MAT environment variable.	export BUILDAH_FORMAT=docker

     --identity-label bool-value

     Adds a label io.buildah.version with its value set to the version of  buil-
     dah which committed the image (default true unless --timestamp or --source-
     date-epoch is used).

     --iidfile ImageIDfile

     Write the image ID to the file.

     --manifest "listName"

     Name  of  the manifest list to which the built image will be added. Creates
     the manifest list if it does not exist. This option is useful for	building
     multi architecture images.

     --omit-history bool-value

     Omit build history information in the built image. (default false).

     This  option is useful for the cases where end users explicitly want to set
     --omit-history to omit the optional History from built images or when work-
     ing with images built using build tools that do not include History  infor-
     mation in their images.

     --pull

     When   the  --pull  flag  is  enabled  or	set  explicitly  to  true  (with
     --pull=true), attempt to pull the latest versions of  SBOM  scanner  images
     from the registries listed in registries.conf if a local SBOM scanner image
     does  not exist or the image in the registry is newer than the one in local
     storage.  Raise an error if the SBOM scanner image is  not  in  any  listed
     registry and is not present locally.

     If  the  flag is disabled (with --pull=false), do not pull SBOM scanner im-
     ages from registries, use only local versions. Raise an  error  if  a  SBOM
     scanner image is not present locally.

     If  the  pull flag is set to always (with --pull=always), pull SBOM scanner
     images from the registries listed in registries.conf.  Raise an error if  a
     SBOM  scanner  image  is not found in the registries, even if an image with
     the same name is present locally.

     If the pull flag is set to missing (with --pull=missing), pull SBOM scanner
     images only if they could not be found in	the  local  containers	storage.
     Raise an error if no image could be found and the pull fails.

     If  the  pull  flag  is  set to never (with --pull=never), do not pull SBOM
     scanner images from registries, use only the local versions.  Raise an  er-
     ror if the image is not present locally.

     --quiet, -q

     When writing the output image, suppress progress output.

     --rewrite-timestamp

     When  generating  the  new  layer for the image, ensure that no newly added
     content bears a timestamp later than the value used by  the  --source-date-
     epoch  flag,  if  one  was  provided, by replacing any timestamps which are
     later than that value, with that value.

     --rm Remove the working container and its contents after creating	the  im-
     age.  Default leaves the container and its content in place.

     --sbom preset

     Generate  SBOMs (Software Bills Of Materials) for the output image by scan-
     ning the working container and build contexts using the  named  combination
     of  scanner image, scanner commands, and merge strategy.  Must be specified
     with one or more of --sbom-image-output, --sbom-image-purl-output,  --sbom-
     output, and --sbom-purl-output.  Recognized presets, and the set of options
     which they equate to:

	    * "syft", "syft-cyclonedx":
	       --sbom-scanner-image=ghcr.io/anchore/syft
	       --sbom-scanner-command="/syft  scan  -q dir:{ROOTFS} --output cy-
	      clonedx-json={OUTPUT}"
	       --sbom-scanner-command="/syft scan -q dir:{CONTEXT} --output  cy-
	      clonedx-json={OUTPUT}"
	       --sbom-merge-strategy=merge-cyclonedx-by-component-name-and-ver-
	      sion

	    * "syft-spdx":
	       --sbom-scanner-image=ghcr.io/anchore/syft
	       --sbom-scanner-command="/syft scan -q dir:{ROOTFS} --output spdx-
	      json={OUTPUT}"
	       --sbom-scanner-command="/syft   scan  -q  dir:{CONTEXT}	--output
	      spdx-json={OUTPUT}"
	       --sbom-merge-strategy=merge-spdx-by-package-name-and-versioninfo

	    * "trivy", "trivy-cyclonedx":
	       --sbom-scanner-image=ghcr.io/aquasecurity/trivy
	       --sbom-scanner-command="trivy filesystem -q {ROOTFS} --format cy-
	      clonedx --output {OUTPUT}"
	       --sbom-scanner-command="trivy filesystem  -q  {CONTEXT}	--format
	      cyclonedx --output {OUTPUT}"
	       --sbom-merge-strategy=merge-cyclonedx-by-component-name-and-ver-
	      sion

	    * "trivy-spdx":
	       --sbom-scanner-image=ghcr.io/aquasecurity/trivy
	       --sbom-scanner-command="trivy  filesystem  -q  {ROOTFS}	--format
	      spdx-json --output {OUTPUT}"
	       --sbom-scanner-command="trivy filesystem  -q  {CONTEXT}	--format
	      spdx-json --output {OUTPUT}"
	       --sbom-merge-strategy=merge-spdx-by-package-name-and-versioninfo

     --sbom-image-output path

     When  generating  SBOMs,  store the generated SBOM in the specified path in
     the output image.	There is no default.

     --sbom-image-purl-output path

     When   generating	 SBOMs,   scan	  them	  for	 PURL	 (package    URL
     <https://github.com/package-url/purl-spec/blob/master/PURL-SPECIFICA-
     TION.rst>) information, and save a list of found PURLs to the named file in
     the local filesystem.  There is no default.

     --sbom-merge-strategy method

     If more than one --sbom-scanner-command value is being used, use the speci-
     fied  method  to merge the output from later commands with output from ear-
     lier commands.  Recognized values include:

	    * cat
	       Concatenate the files.

	    * merge-cyclonedx-by-component-name-and-version
	       Merge the "component" fields of JSON documents,	ignoring  values
	      from
	       documents when the combination of their "name" and "version" val-
	      ues is
	       already	present.   Documents are processed in the order in which
	      they are
	       generated, which is the order in which the commands that generate
	      them
	       were specified.

	    * merge-spdx-by-package-name-and-versioninfo
	       Merge the "package" fields of  JSON  documents,	ignoring  values
	      from
	       documents  when the combination of their "name" and "versionInfo"
	      values is
	       already present.  Documents are processed in the order  in  which
	      they are
	       generated, which is the order in which the commands that generate
	      them
	       were specified.

     --sbom-output file

     When  generating  SBOMs,  store the generated SBOM in the named file on the
     local filesystem.	There is no default.

     --sbom-purl-output file

     When   generating	 SBOMs,   scan	  them	  for	 PURL	 (package    URL
     <https://github.com/package-url/purl-spec/blob/master/PURL-SPECIFICA-
     TION.rst>) information, and save a list of found PURLs to the named file in
     the local filesystem.  There is no default.

     --sbom-scanner-command image

     Generate SBOMs by running the specified command from the scanner image.  If
     multiple  commands  are  specified, they are run in the order in which they
     are specified.  These text substitutions are performed:
       - {ROOTFS}
	   The root of the built image's filesystem, bind mounted.
       - {CONTEXT}
	   The build context and additional build contexts, bind mounted.
       - {OUTPUT}
	   The name of a temporary output file, to be read and merged with  oth-
     ers or copied elsewhere.

     --sbom-scanner-image image

     Generate SBOMs using the specified scanner image.

     --sign-by fingerprint

     Sign  the	new  image  using the GPG key that matches the specified finger-
     print.

     --source-date-epoch seconds

     Set the "created" timestamp for the image to this number of  seconds  since
     the  epoch  (Unix	time 0, i.e., 00:00:00 UTC on 1 January 1970) to make it
     easier to create deterministic builds (defaults  to  $SOURCE_DATE_EPOCH  if
     set, otherwise the current time will be used).

     The "created" timestamp is written into the image's configuration and mani-
     fest  when the image is committed, so committing the same working container
     at two different times will produce images with  different  sha256  hashes,
     even if no other changes were made to the working container in between.

     When  --source-date-epoch	is set, the "created" timestamp is always set to
     the time specified, which should allow for identical images to be committed
     at different times.

     Conflicts with the similar --timestamp flag, which also sets its  specified
     time on layer contents.

     --squash

     Squash all of the new image's layers (including those inherited from a base
     image) into a single new layer.

     --timestamp seconds

     Set  the  "created" timestamp for the image to this number of seconds since
     the epoch (Unix time 0, i.e., 00:00:00 UTC on 1 January 1970)  to	make  it
     easier to create deterministic builds (defaults to current time).

     The "created" timestamp is written into the image's configuration and mani-
     fest  when the image is committed, so committing the same working container
     at two different times will produce images with  different  sha256  hashes,
     even if no other changes were made to the working container in between.

     When  --timestamp is set, the "created" timestamp is always set to the time
     specified, which should allow for identical images to be committed at  dif-
     ferent times.  All content in the new layer added as part of the image will
     also bear this timestamp.

     Conflicts	with the similar --source-date-epoch flag, which by default does
     not affect the timestamps of layer contents.

     --tls-verify bool-value

     Require HTTPS and verification of certificates when  talking  to  container
     registries  (defaults to true).  TLS verification cannot be used when talk-
     ing to an insecure registry.

     --unsetannotation annotation

     Unset the image annotation, causing the annotation not to be inherited from
     the base image.

     --unsetenv env

     Unset environment variables from the final image.

EXAMPLE
     This example saves an image based on the container.
      buildah commit containerID newImageName

     This example saves an image named newImageName based on the  container  and
     removes the working container.
      buildah commit --rm containerID newImageName

     This  example  commits to an OCI archive file named /tmp/newImageName based
     on the container.
      buildah commit containerID oci-archive:/tmp/newImageName

     This example saves an image with no name, removes	the  working  container,
     and creates a new container using the image's ID.
      buildah from $(buildah commit --rm containerID)

     This example saves an image based on the container disabling compression.
      buildah commit --disable-compression containerID

     This  example saves an image named newImageName based on the container dis-
     abling compression.
      buildah commit --disable-compression containerID newImageName

     This example commits the container to the image on the local registry while
     turning off tls verification.
      buildah commit --tls-verify=false containerID  docker://localhost:5000/im-
     ageId

     This example commits the container to the image on the local registry using
     credentials and certificates for authentication.
      buildah commit --cert-dir ~/auth	--tls-verify=true --creds=username:pass-
     word containerID docker://localhost:5000/imageId

     This example commits the container to the image on the local registry using
     credentials  from the /tmp/auths/myauths.json file and certificates for au-
     thentication.
      buildah  commit  --authfile  /tmp/auths/myauths.json   --cert-dir   ~/auth
     --tls-verify=true	 --creds=username:password  containerID  docker://local-
     host:5000/imageName

     This example saves an image based on the container, but stores dates  based
     on epoch time.  buildah commit --timestamp=0 containerID newImageName

   Building  an  multi-architecture  image using the --manifest option (requires
     emulation software)
     #!/bin/sh
     build() {
	  ctr=$(./bin/buildah from --arch $1 ubi8)
	  ./bin/buildah run $ctr dnf install -y iputils
	  ./bin/buildah commit --manifest ubi8ping $ctr
     }
     build arm
     build amd64
     build s390x

ENVIRONMENT
     BUILD_REGISTRY_SOURCES

     BUILD_REGISTRY_SOURCES, if set, is treated as a JSON object which	contains
     lists  of	registry  names  under	the keys insecureRegistries, blockedReg-
     istries, and allowedRegistries.

     When committing an image, if the image is to be given a name,  the  portion
     of  the name that corresponds to a registry is compared to the items in the
     blockedRegistries list, and if it matches any of them, the  commit  attempt
     is  denied.  If there are registries in the allowedRegistries list, and the
     portion of the name that corresponds to the registry is not  in  the  list,
     the commit attempt is denied.

     TMPDIR  The  TMPDIR  environment  variable allows the user to specify where
     temporary files are stored while pulling and pushing images.   Defaults  to
     '/var/tmp'.

FILES
     registries.conf (/etc/containers/registries.conf)

     registries.conf  is  the configuration file which specifies which container
     registries should be consulted when completing image names which do not in-
     clude a registry or domain portion.

     policy.json (/etc/containers/policy.json)

     Signature policy file.  This defines the trust policy for container images.
     Controls which container registries can be used for image, and  whether  or
     not the tool should trust the images.

SEE ALSO
     buildah(1),  buildah-images(1),  containers-policy.json(5), containers-reg-
     istries.conf(5), containers-transports(5), containers-auth.json(5)

buildah 			   March 2017		       buildah-commit(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=buildah-commit&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help