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

FreeBSD Manual Pages

  
 
  

home | help
podman-farm-build(1)	    General Commands Manual	  podman-farm-build(1)

NAME
       podman-farm-build - Build images	on farm	nodes, then bundle them	into a
       manifest	list

SYNOPSIS
       podman farm build [options] [context]

DESCRIPTION
       podman  farm  build  Builds an image on all nodes in a farm and bundles
       them up into a manifest list.  It executes the podman build command  on
       the nodes in the	farm with the given Containerfile. Once	the images are
       built  on all the farm nodes, the images	will be	pushed to the registry
       given via the --tag flag. Once all the images have been pushed, a mani-
       fest list will be created locally and pushed to the registry as well.

       The manifest list will contain an image per  native  architecture  type
       that is present in the farm.

       The  primary  function  of this command is to create multi-architecture
       builds that will	be faster than doing it	 via  emulation	 using	podman
       build --arch --platform.

       If  no  farm  is	specified, the build will be sent out to all the nodes
       that podman system connection knows of.

       Note: Since the images built are	directly pushed	 to  a	registry,  the
       user  must pass in a full image name using the --tag option in the for-
       mat registry/repository/imageName[:tag]`.

OPTIONS
   --add-host=hostname[;hostname[;...]]:ip
       Add a custom host-to-IP mapping to the container's /etc/hosts file.

       The option takes	one or multiple	semicolon-separated  hostnames	to  be
       mapped  to  a single IPv4 or IPv6 address, separated by a colon.	It can
       also be used to overwrite the IP	addresses of hostnames Podman adds  to
       /etc/hosts  by  default	(also  see the --name and --hostname options).
       This option can be specified multiple times to add additional  mappings
       to  /etc/hosts.	It  conflicts with the --no-hosts option and conflicts
       with no_hosts=true in containers.conf.

       Instead of an IP	address, the special flag host-gateway can  be	given.
       This  resolves to an IP address the container can use to	connect	to the
       host. The IP address chosen depends on your network setup, thus there's
       no guarantee that Podman	can determine the host-gateway	address	 auto-
       matically,  which will then cause Podman	to fail	with an	error message.
       You can overwrite this IP address using the host_containers_internal_ip
       option in containers.conf.

       The host-gateway	address	is also	used by	Podman	to  automatically  add
       the  host.containers.internal  and  host.docker.internal	 hostnames  to
       /etc/hosts.  You	can prevent that by either giving the  --no-hosts  op-
       tion,  or  by  setting  host_containers_internal_ip="none"  in contain-
       ers.conf. If no host-gateway address was	configured manually and	Podman
       fails to	determine the IP address automatically,	Podman	will  silently
       skip  adding  these internal hostnames to /etc/hosts. If	Podman is run-
       ning in a virtual machine using podman machine (this includes  Mac  and
       Windows hosts), Podman will silently skip adding	the internal hostnames
       to /etc/hosts, unless an	IP address was configured manually; the	inter-
       nal hostnames are resolved by the gvproxy DNS resolver instead.

       Podman  will use	the /etc/hosts file of the host	as a basis by default,
       i.e.  any hostname present in this file will also  be  present  in  the
       /etc/hosts  file	of the container. A different base file	can be config-
       ured using the base_hosts_file config in	containers.conf.

   --annotation=annotation=value
       Add an image annotation (e.g. annotation=value) to the image  metadata.
       Can be used multiple times.

       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  on Linux,	and $HOME/.config/containers/auth.json on Win-
       dows/macOS.  The	file is	created	by podman login. If the	 authorization
       state  is  not found there, $HOME/.docker/config.json is	checked, which
       is set using docker login.

       Note: There is also the option to override the default path of the  au-
       thentication  file  by setting the REGISTRY_AUTH_FILE environment vari-
       able. This can be done with export REGISTRY_AUTH_FILE=path.

   --build-arg=arg=value
       Specifies a build argument and its value, which is interpolated in  in-
       structions  read	 from the Containerfiles in the	same way that environ-
       ment variables are, but which are not  added  to	 environment  variable
       list in the resulting image's configuration.

   --build-arg-file=path
       Specifies  a  file  containing  lines  of  build	 arguments of the form
       arg=value.  The suggested file name is argfile.conf.

       Comment lines beginning with # are ignored,  along  with	 blank	lines.
       All others must be of the arg=value format passed to --build-arg.

       If several arguments are	provided via the --build-arg-file and --build-
       arg  options, the build arguments are merged across all of the provided
       files and command line arguments.

       Any file	provided in a --build-arg-file option is read before the argu-
       ments supplied via the --build-arg option.

       When a given argument name is specified several	times,	the  last  in-
       stance  is  the	one that is passed to the resulting builds. This means
       --build-arg values always override those	in a --build-arg-file.

   --build-context=name=value
       Specify an additional build context using its short name	and its	 loca-
       tion.   Additional  build contexts can be referenced in the same	manner
       as we access different stages in	COPY instruction.

       Valid values are:

        Local		 directory	       e.g.	       --build-context
	 project2=../path/to/project2/src

        HTTP	URL  to	 a  tarball   e.g.  --build-context  src=https://exam-
	 ple.org/releases/src.tar

        Container image  specified with  a  container-image://	 prefix,  e.g.
	 --build-context  alpine=container-image://alpine:3.15,	 (also accepts
	 docker://, docker-image://)

       On the Containerfile side, reference the	build context on all  commands
       that accept the from parameter. Heres how that might look:

       FROM [name]
       COPY --from=[name] ...
       RUN --mount=from=[name]

       The value of [name] is matched with the following priority order:

        Named build context defined with --build-context [name]=..

        Stage defined with AS [name] inside Containerfile

        Image [name], either local or in a remote registry

   --cache-from=image
       Repository  to  utilize	as  a  potential cache source. When specified,
       Buildah tries to	look for cache images in the specified repository  and
       attempts	 to  pull cache	images instead of actually executing the build
       steps locally. Buildah only attempts to pull previously	cached	images
       if they are considered as valid cache hits.

       Use  the	 --cache-to  option to populate	a remote repository with cache
       content.

       Example

       # populate a cache and also consult it
       buildah build -t	test --layers --cache-to registry/myrepo/cache --cache-from registry/myrepo/cache .

       Note: --cache-from option is ignored unless --layers is specified.

   --cache-to=image
       Set this	flag to	specify	a remote repository  that  is  used  to	 store
       cache  images.  Buildah attempts	to push	newly built cache image	to the
       remote repository.

       Note: Use the --cache-from option in order to use cache	content	 in  a
       remote repository.

       Example

       # populate a cache and also consult it
       buildah build -t	test --layers --cache-to registry/myrepo/cache --cache-from registry/myrepo/cache .

       Note: --cache-to	option is ignored unless --layers is specified.

   --cache-ttl
       Limit  the  use	of  cached images to only consider images with created
       timestamps less than duration ago.  For example	if  --cache-ttl=1h  is
       specified,  Buildah  considers intermediate cache images	which are cre-
       ated under the duration of one hour, and	intermediate cache images out-
       side this duration is ignored.

       Note: Setting --cache-ttl=0 manually is equivalent to using  --no-cache
       in  the	implementation since this means	that the user does not want to
       use cache at all.

   --cap-add=CAP_xxx
       When executing RUN instructions,	run the	command	specified in  the  in-
       struction  with	the  specified capability added	to its capability set.
       Certain capabilities are	granted	by default; this option	can be used to
       add more.

   --cap-drop=CAP_xxx
       When executing RUN instructions,	run the	command	specified in  the  in-
       struction  with	the  specified	capability removed from	its capability
       set.   The   CAP_CHOWN,	 CAP_DAC_OVERRIDE,   CAP_FOWNER,   CAP_FSETID,
       CAP_KILL,  CAP_NET_BIND_SERVICE,	 CAP_SETFCAP, CAP_SETGID, CAP_SETPCAP,
       and CAP_SETUID capabilities are granted by default; this	option can  be
       used to remove them.

       If  a  capability is specified to both the --cap-add and	--cap-drop op-
       tions, it is dropped, regardless	of the order in	which the options were
       given.

   --cert-dir=path
       Use certificates	at path	(*.crt,	*.cert,	*.key) to connect to the  reg-
       istry.  (Default: /etc/containers/certs.d) For details, see containers-
       certs.d(5).  (This option is  not  available  with  the	remote	Podman
       client, including Mac and Windows (excluding WSL2) machines)

   --cgroup-parent=path
       Path to cgroups under which the cgroup for the container	is created. If
       the  path is not	absolute, the path is considered to be relative	to the
       cgroups path of the init	process. Cgroups are created if	 they  do  not
       already exist.

   --cgroupns=how
       Sets the	configuration for cgroup namespaces when handling RUN instruc-
       tions.	The configured value can be "" (the empty string) or "private"
       to indicate that	a new cgroup namespace is created, or it can be	"host"
       to indicate that	the cgroup namespace in	which buildah itself is	 being
       run is reused.

   --cleanup
       Remove built images from	farm nodes on success (Default:	false).

   --compat-volumes
       Handle  directories  marked  using the VOLUME instruction (both in this
       build, and those	inherited from base images) such that  their  contents
       can  only be modified by	ADD and	COPY instructions. Any changes made in
       those locations by RUN instructions will	be reverted. Before the	intro-
       duction of this option, this behavior was the default, but  it  is  now
       disabled	by default.

   --cpp-flag=flags
       Set  additional	flags to pass to the C Preprocessor cpp(1). Container-
       files ending with a ".in" suffix	is preprocessed	via cpp(1).  This  op-
       tion can	be used	to pass	additional flags to cpp.Note: You can also set
       default	CPPFLAGS  by setting the BUILDAH_CPPFLAGS environment variable
       (e.g., export BUILDAH_CPPFLAGS="-DDEBUG").

   --cpu-period=limit
       Set the CPU period for the Completely Fair Scheduler (CFS), which is  a
       duration	in microseconds. Once the container's CPU quota	is used	up, it
       will not	be scheduled to	run until the current period ends. Defaults to
       100000 microseconds.

       On  some	 systems,  changing the	resource limits	may not	be allowed for
       non-root	 users.	 For  more  details,  see  https://github.com/contain-
       ers/podman/blob/main/troubleshooting.md#26-running-containers-with-re-
       source-limits-fails-with-a-permissions-error

       This option is not supported on cgroups V1 rootless systems.

   --cpu-quota=limit
       Limit the CPU Completely	Fair Scheduler (CFS) quota.

       Limit  the  container's	CPU usage. By default, containers run with the
       full CPU	resource. The limit is a number	in microseconds. If  a	number
       is  provided,  the container is allowed to use that much	CPU time until
       the CPU period ends (controllable via --cpu-period).

       On some systems,	changing the resource limits may not  be  allowed  for
       non-root	 users.	 For  more  details,  see  https://github.com/contain-
       ers/podman/blob/main/troubleshooting.md#26-running-containers-with-re-
       source-limits-fails-with-a-permissions-error

       This option is not supported on cgroups V1 rootless systems.

   --cpu-shares, -c=shares
       CPU shares (relative weight).

       By default, all containers get the same proportion of CPU cycles.  This
       proportion  can	be  modified  by  changing  the	 container's CPU share
       weighting relative to the combined weight of all	the  running  contain-
       ers.  Default weight is 1024.

       The  proportion	only applies when CPU-intensive	processes are running.
       When tasks in one container are idle,  other  containers	 can  use  the
       left-over  CPU  time. The actual	amount of CPU time varies depending on
       the number of containers	running	on the system.

       For example, consider three containers, one has a cpu-share of 1024 and
       two others have a cpu-share setting of 512. When	processes in all three
       containers attempt to use 100% of CPU, the first	container receives 50%
       of the total CPU	time. If a fourth container is added with a  cpu-share
       of  1024,  the  first container only gets 33% of	the CPU. The remaining
       containers receive 16.5%, 16.5% and 33% of the CPU.

       On a multi-core system, the shares of CPU time are distributed over all
       CPU cores. Even if a container is limited to  less  than	 100%  of  CPU
       time, it	can use	100% of	each individual	CPU core.

       For example, consider a system with more	than three cores.  If the con-
       tainer C0 is started with --cpu-shares=512 running one process, and an-
       other  container	 C1 with --cpu-shares=1024 running two processes, this
       can result in the following division of CPU shares:

       +-----+-----------+-----+--------------+
       | PID | container | CPU | CPU share    |
       +-----+-----------+-----+--------------+
       | 100 | C0	 | 0   | 100% of CPU0 |
       +-----+-----------+-----+--------------+
       | 101 | C1	 | 1   | 100% of CPU1 |
       +-----+-----------+-----+--------------+
       | 102 | C1	 | 2   | 100% of CPU2 |
       +-----+-----------+-----+--------------+

       On some systems,	changing the resource limits may not  be  allowed  for
       non-root	 users.	 For  more  details,  see  https://github.com/contain-
       ers/podman/blob/main/troubleshooting.md#26-running-containers-with-re-
       source-limits-fails-with-a-permissions-error

       This option is not supported on cgroups V1 rootless systems.

   --cpuset-cpus=number
       CPUs in which to	allow execution. Can be	specified as a comma-separated
       list (e.g. 0,1),	as a range (e.g.  0-3),	 or  any  combination  thereof
       (e.g. 0-3,7,11-15).

       On  some	 systems,  changing the	resource limits	may not	be allowed for
       non-root	 users.	 For  more  details,  see  https://github.com/contain-
       ers/podman/blob/main/troubleshooting.md#26-running-containers-with-re-
       source-limits-fails-with-a-permissions-error

       This option is not supported on cgroups V1 rootless systems.

   --cpuset-mems=nodes
       Memory nodes (MEMs) in which to allow execution (0-3, 0,1). Only	effec-
       tive on NUMA systems.

       If  there  are  four  memory  nodes  on the system (0-3), use --cpuset-
       mems=0,1	then processes in the container	 only  uses  memory  from  the
       first two memory	nodes.

       On  some	 systems,  changing the	resource limits	may not	be allowed for
       non-root	 users.	 For  more  details,  see  https://github.com/contain-
       ers/podman/blob/main/troubleshooting.md#26-running-containers-with-re-
       source-limits-fails-with-a-permissions-error

       This option is not supported on cgroups V1 rootless systems.

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

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

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

       Note  that  the	specified  credentials	are  only used to authenticate
       against target registries.  They	are not	used for mirrors or  when  the
       registry	gets rewritten (see containers-registries.conf(5)); to authen-
       ticate against those consider using a containers-auth.json(5) file.

   --decryption-key=key[:passphrase]
       The  [key[:passphrase]]	to  be	used for decryption of images. Key can
       point to	keys and/or certificates. Decryption is	tried with  all	 keys.
       If the key is protected by a passphrase,	it is required to be passed in
       the argument and	omitted	otherwise.

   --device=host-device[:container-device][:permissions]
       Add  a host device to the container. Optional permissions parameter can
       be used to specify device permissions by	combining r for	 read,	w  for
       write, and m for	mknod(2).

       Example:	--device=/dev/sdc:/dev/xvdc:rwm.

       Note: if	host-device is a symbolic link then it is resolved first.  The
       container only stores the major and minor numbers of the	host device.

       Podman may load kernel modules required for using the specified device.
       The   devices  that  Podman  loads  modules  for	 when  necessary  are:
       /dev/fuse.

       In rootless mode, the new device	is bind	mounted	in the container  from
       the host	rather than Podman creating it within the container space. Be-
       cause  the bind mount retains its SELinux label on SELinux systems, the
       container can get permission denied when	accessing the mounted  device.
       Modify  SELinux	settings  to allow containers to use all device	labels
       via the following command:

       $ sudo setsebool	-P  container_use_devices=true

       Note: if	the user only has access rights	via a group, accessing the de-
       vice from inside	a rootless container fails. The	crun(1)	runtime	offers
       a   workaround	for   this   by	  adding   the	 option	  --annotation
       run.oci.keep_original_groups=1.

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

   --dns=ipaddr
       Set custom DNS servers.

       This option can be used to override the DNS configuration passed	to the
       container. Typically this is necessary when the host DNS	 configuration
       is  invalid  for	the container (e.g., 127.0.0.1). When this is the case
       the --dns flag is necessary for every run.

       The special value none can be specified to disable creation of /etc/re-
       solv.conf in the	container by Podman.  The /etc/resolv.conf file	in the
       image is	then used without changes.

       Note that ipaddr	may be added  directly	to  the	 container's  /etc/re-
       solv.conf.  This	is not guaranteed though.  For example,	passing	a cus-
       tom  network  whose dns_enabled is set to true to --network will	result
       in /etc/resolv.conf only	referring to the aardvark-dns  server.	 aard-
       vark-dns	 then  forwards	 to  the supplied ipaddr for all non-container
       name queries.

       This option cannot be combined with --network that is set to none.

       Note: this option takes effect only  during  RUN	 instructions  in  the
       build.  It does not affect /etc/resolv.conf in the final	image.

   --dns-option=option
       Set custom DNS options to be used during	the build.

   --dns-search=domain
       Set custom DNS search domains to	be used	during the build.

   --env=env[=value]
       Add  a value (e.g. env=value) to	the built image.  Can be used multiple
       times.  If neither = nor	a value	are specified, but env is set  in  the
       current environment, the	value from the current environment is added to
       the image.  To remove an	environment variable from the built image, use
       the --unsetenv option.

   --farm
       This  option  specifies	the  name  of the farm to be used in the build
       process.

       This option specifies the name of the farm to  be  used	in  the	 build
       process.

   --file, -f=Containerfile
       Specifies  a Containerfile which	contains instructions for building the
       image, either a local file or an	http or	https URL.  If more  than  one
       Containerfile is	specified, FROM	instructions are only be accepted from
       the last	specified file.

       If  a build context is not specified, and at least one Containerfile is
       a local file, the directory in which it resides is used	as  the	 build
       context.

       Specifying the option -f	- causes the Containerfile contents to be read
       from stdin.

   --force-rm
       Always  remove intermediate containers after a build, even if the build
       fails (default true).

   --format
       Control the format for the built	 image's  manifest  and	 configuration
       data.   Recognized  formats  include  oci (OCI image-spec v1.0, the de-
       fault) and docker (version 2, using schema format 2 for the manifest).

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

   --from
       Overrides  the  first  FROM  instruction	 within	the Containerfile.  If
       there are multiple FROM instructions in a Containerfile,	only the first
       is changed.

       With the	remote podman client, not all container	transports work	as ex-
       pected. For example, oci-archive:/x.tar references /x.tar on the	remote
       machine instead of on the client. When using podman remote  clients  it
       is  best	 to  restrict  use to containers-storage, and docker://	trans-
       ports.

   --group-add=group | keep-groups
       Assign additional groups	to the primary user running  within  the  con-
       tainer process.

        keep-groups  is  a special flag that tells Podman to keep the supple-
	 mentary group access.

       Allows container	to use the user's supplementary	group access. If  file
       systems	or  devices  are only accessible by the	rootless user's	group,
       this flag tells the OCI runtime to pass the group access	into the  con-
       tainer. Currently only available	with the crun OCI runtime. Note: keep-
       groups  is  exclusive, other groups cannot be specified with this flag.
       (Not available for remote commands, including Mac and Windows  (exclud-
       ing WSL2) machines)

   --help, -h
       Print usage statement

   --hooks-dir=path
       Each  *.json  file in the path configures a hook	for buildah build con-
       tainers.	For more details on the	syntax of the JSON files and  the  se-
       mantics of hook injection. Buildah currently support both the 1.0.0 and
       0.1.0 hook schemas, although the	0.1.0 schema is	deprecated.

       This  option  may  be set multiple times; paths from later options have
       higher precedence.

       For the annotation conditions, buildah uses any annotations set in  the
       generated OCI configuration.

       For  the	bind-mount conditions, only mounts explicitly requested	by the
       caller via --volume are considered. Bind	mounts that buildah inserts by
       default (e.g. /dev/shm) are not considered.

       If --hooks-dir is unset for root	callers, Buildah currently defaults to
       /usr/share/containers/oci/hooks.d  and  /etc/containers/oci/hooks.d  in
       order of	increasing precedence. Using these defaults is deprecated. Mi-
       grate to	explicitly setting --hooks-dir.

   --http-proxy
       By default proxy	environment variables are passed into the container if
       set  for	 the Podman process. This can be disabled by setting the value
       to false.  The environment  variables  passed  in  include  http_proxy,
       https_proxy,  ftp_proxy,	 no_proxy, and also the	upper case versions of
       those. This option is only needed when the host system must use a proxy
       but the container does not use any proxy. Proxy	environment  variables
       specified  for the container in any other way overrides the values that
       have been passed	through	from the host.	(Other	ways  to  specify  the
       proxy for the container include passing the values with the --env flag,
       or  hard	 coding	 the proxy environment at container build time.)  When
       used with the remote client it uses  the	 proxy	environment  variables
       that are	set on the server process.

       Defaults	to true.

   --identity-label
       Adds default identity label io.buildah.version if set. (default true).

   --ignorefile
       Path to an alternative .containerignore file.

   --iidfile=ImageIDfile
       Write  the  built image's ID to the file.  When --platform is specified
       more than once, attempting to use this option triggers an error.

   --inherit-annotations=bool-value
       Inherit the annotations from the	base image or  base  stages.  (default
       true).	Use cases which	set this flag to false may need	to do the same
       for the --created-annotation flag.

   --inherit-labels
       Inherit the labels from the base	image or base stages. (default true).

   --ipc=how
       Sets the	configuration for IPC namespaces when  handling	 RUN  instruc-
       tions.	The  configured	 value	can  be	"" (the	empty string) or "con-
       tainer" to indicate that	a new IPC namespace is created,	or it  can  be
       "host" to indicate that the IPC namespace in which podman itself	is be-
       ing  run	 is reused, or it can be the path to an	IPC namespace which is
       already in use by another process.

   --isolation=type
       Controls	what type of isolation is used for running processes  as  part
       of RUN instructions.  Recognized	types include oci (OCI-compatible run-
       time,  the  default),  rootless (OCI-compatible runtime invoked using a
       modified	configuration and its --rootless option	 enabled,  with	 --no-
       new-keyring --no-pivot added to its create invocation, with network and
       UTS namespaces disabled,	and IPC, PID, and user namespaces enabled; the
       default	for  unprivileged users), and chroot (an internal wrapper that
       leans more toward chroot(1) than	container technology).

       Note: You can also override the default isolation type by  setting  the
       BUILDAH_ISOLATION environment variable.	export BUILDAH_ISOLATION=oci

   --jobs=number
       Run  up	to  N concurrent stages	in parallel.  If the number of jobs is
       greater than 1, stdin is	read from /dev/null.  If 0 is specified,  then
       there is	no limit in the	number of jobs that run	in parallel.

   --label=label
       Add  an	image  label  (e.g. label=value) to the	image metadata.	Can be
       used multiple times.

       Users can set a special LABEL io.containers.capabilities=CAP1,CAP2,CAP3
       in a Containerfile that specifies the list of  Linux  capabilities  re-
       quired  for  the	 container  to run properly. This label	specified in a
       container image tells Podman to run the container with just these capa-
       bilities. Podman	launches the container with just the  specified	 capa-
       bilities,  as  long as this list	of capabilities	is a subset of the de-
       fault list.

       If the specified	capabilities are not in	the default set, Podman	prints
       an error	message	and runs the container with the	default	capabilities.

   --layer-label=label[=value]
       Add an intermediate image label (e.g. label=value) to the  intermediate
       image metadata. It can be used multiple times.

       If  label is named, but neither = nor a value is	provided, then the la-
       bel is set to an	empty value.

   --layers
       Cache intermediate images during	the build process (Default is true).

       Note: You can also override the default value of	layers by setting  the
       BUILDAH_LAYERS environment variable. export BUILDAH_LAYERS=true

   --local, -l
       Build image on local machine as well as on farm nodes.

   --logfile=filename
       Log  output  which is sent to standard output and standard error	to the
       specified file instead of to standard output and	standard error.	  This
       option is not supported on the remote client, including Mac and Windows
       (excluding WSL2)	machines.

   --memory, -m=number[unit]
       Memory limit. A unit can	be b (bytes), k	(kibibytes), m (mebibytes), or
       g (gibibytes).

       Allows  the  memory  available to a container to	be constrained.	If the
       host supports swap memory, then the -m memory  setting  can  be	larger
       than  physical  RAM.  If	 a limit of 0 is specified (not	using -m), the
       container's memory is not limited. The actual limit may be  rounded  up
       to  a  multiple	of the operating system's page size (the value is very
       large, that's millions of trillions).

       This option is not supported on cgroups V1 rootless systems.

   --memory-swap=number[unit]
       A limit value equal to memory plus swap.	 A unit	can be	b  (bytes),  k
       (kibibytes), m (mebibytes), or g	(gibibytes).

       Must  be	 used with the -m (--memory) flag.  The	argument value must be
       larger than that	of
	-m (--memory) By default, it is	set to double the value	of --memory.

       Set number to -1	to enable unlimited swap.

       This option is not supported on cgroups V1 rootless systems.

   --network=mode, --net
       Sets the	configuration for network namespaces  when  handling  RUN  in-
       structions.

       Valid mode values are:

        none: no networking.

        host:	use  the  Podman host network stack. Note: the host mode gives
	 the container full access to local system services such as D-bus  and
	 is therefore considered insecure.

        ns:path: path to a network namespace to join.

        private: create a new namespace for the container (default)

        <network  name|ID>:  Join the network with the	given name or ID, e.g.
	 use --network mynet to	join the network with  the  name  mynet.  Only
	 supported for rootful users.

        slirp4netns[:OPTIONS,...]:  use  slirp4netns(1) to create a user net-
	 work stack. It	is possible to specify these additional	options,  they
	 can also be set with network_cmd_options in containers.conf:

	  allow_host_loopback=true|false: Allow slirp4netns to	reach the host
	   loopback  IP	(default is 10.0.2.2 or	the second IP from slirp4netns
	   cidr	subnet when changed, see the cidr option below).  The  default
	   is false.

	  mtu=MTU:  Specify  the  MTU	to  use	 for this network. (Default is
	   65520).

	  cidr=CIDR: Specify ip range to use for this	network.  (Default  is
	   10.0.2.0/24).

	  enable_ipv6=true|false: Enable IPv6.	Default	is true. (Required for
	   outbound_addr6).

	  outbound_addr=INTERFACE: Specify the	outbound interface slirp binds
	   to (ipv4 traffic only).

	  outbound_addr=IPv4:	Specify	 the outbound ipv4 address slirp binds
	   to.

	  outbound_addr6=INTERFACE:  Specify  the  outbound  interface	 slirp
	   binds to (ipv6 traffic only).

	  outbound_addr6=IPv6:	 Specify the outbound ipv6 address slirp binds
	   to.

        pasta[:OPTIONS,...]: use pasta(1) to create  a	 user-mode  networking
	 stack.
	 This  is  the	default	 for rootless containers and only supported in
	 rootless mode.
	 By default, IPv4 and IPv6 addresses and routes, as well  as  the  pod
	 interface  name,  are	copied from the	host. If port forwarding isn't
	 configured, ports are forwarded dynamically as	services are bound  on
	 either	 side (init namespace or container namespace). Port forwarding
	 preserves the	original  source  IP  address.	Options	 described  in
	 pasta(1) can be specified as comma-separated arguments.
	 In  terms  of	pasta(1) options, --config-net is given	by default, in
	 order to configure networking when  the  container  is	 started,  and
	 --no-map-gw  is  also assumed by default, to avoid direct access from
	 container to host using the gateway address. The latter can be	 over-
	 ridden	by passing --map-gw in the pasta-specific options (despite not
	 being an actual pasta(1) option).
	 Also,	-t  none and -u	none are passed	to disable automatic port for-
	 warding based on bound	ports. Similarly, -T  none  and	 -U  none  are
	 given to disable the same functionality from container	to host.
	 Some examples:

	  pasta:--map-gw:  Allow the container	to directly reach the host us-
	   ing the gateway address.

	  pasta:--mtu,1500: Specify a 1500 bytes MTU for the tap interface in
	   the container.

	  pasta:--ipv4-only,-a,10.0.2.0,-n,24,-g,10.0.2.2,--dns-for-
	   ward,10.0.2.3,-m,1500,--no-ndp,--no-dhcpv6,--no-dhcp, equivalent to
	   default slirp4netns(1) options: disable IPv6, assign	10.0.2.0/24 to
	   the tap0 interface in the container,	with gateway 10.0.2.3,	enable
	   DNS forwarder reachable at 10.0.2.3,	set MTU	to 1500	bytes, disable
	   NDP,	DHCPv6 and DHCP	support.

	  pasta:-I,tap0,--ipv4-only,-a,10.0.2.0,-n,24,-g,10.0.2.2,--dns-for-
	   ward,10.0.2.3,--no-ndp,--no-dhcpv6,--no-dhcp, equivalent to default
	   slirp4netns(1)  options  with  Podman overrides: same as above, but
	   leave the MTU to 65520 bytes

	  pasta:-t,auto,-u,auto,-T,auto,-U,auto: enable automatic  port  for-
	   warding  based on observed bound ports from both host and container
	   sides

	  pasta:-T,5201: enable forwarding of TCP port	5201 from container to
	   host, using the loopback interface instead of the tap interface for
	   improved performance

   --no-cache
       Do not use existing cached images for the container build.  Build  from
       the start with a	new set	of cached layers.

   --no-hostname
       Do not create the /etc/hostname file in the containers.

       By  default,  Podman  manages  the  /etc/hostname file, adding the con-
       tainer's	own hostname.  When the	--no-hostname option is	set,  the  im-
       age's /etc/hostname will	be preserved unmodified	if it exists.

   --no-hosts
       Do not modify the /etc/hosts file in the	container.

       Podman  assumes control over the	container's /etc/hosts file by default
       and adds	entries	for the	container's name (see --name option) and host-
       name (see --hostname option), the internal host.containers.internal and
       host.docker.internal hosts, as well as any  hostname  added  using  the
       --add-host  option. Refer to the	--add-host option for details. Passing
       --no-hosts disables this, so that the image's /etc/hosts	file  is  kept
       unmodified.  The	same can be achieved globally by setting no_hosts=true
       in containers.conf.

       This option conflicts with --add-host.

   --omit-history
       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 working with images	built using build tools	that  do  not  include
       History information in their images.

   --os-feature=feature
       Set the name of a required operating system feature for the image which
       is  built.   By default,	if the image is	not based on scratch, the base
       image's required	OS feature list	is kept, if the	base  image  specified
       any.   This  option is typically	only meaningful	when the image's OS is
       Windows.

       If feature has a	trailing -, then the feature is	removed	from  the  set
       of required features which is listed in the image.

   --os-version=version
       Set  the	exact required operating system	version	for the	image which is
       built.  By default, if the image	is not based on	scratch, the base  im-
       age's  required	OS  version  is	kept, if the base image	specified one.
       This option is typically	only meaningful	when the image's  OS  is  Win-
       dows, and is typically set in Windows base images, so using this	option
       is usually unnecessary.

   --pid=pid
       Sets  the  configuration	 for PID namespaces when handling RUN instruc-
       tions.  The configured value can	be ""  (the  empty  string)  or	 "con-
       tainer"	to  indicate that a new	PID namespace is created, or it	can be
       "host" to indicate that the PID namespace in which podman itself	is be-
       ing run is reused, or it	can be the path	to a PID  namespace  which  is
       already in use by another process.

   --platforms=p1,p2,p3...
       Build only on farm nodes	that match the given platforms.

   --pull=policy
       Pull image policy. The default is missing.

        always: Always	pull the image and throw an error if the pull fails.

        missing: Only pull the	image when it does not exist in	the local con-
	 tainers  storage.   Throw  an error if	no image is found and the pull
	 fails.

        never:	Never pull the image but use the one from the local containers
	 storage.  Throw an error when no image	is found.

        newer:	Pull if	the image on the registry is newer than	the one	in the
	 local containers storage.  An image is	considered to  be  newer  when
	 the digests are different.  Comparing the time	stamps is prone	to er-
	 rors.	Pull errors are	suppressed if a	local image was	found.

   --quiet, -q
       Suppress	 output	 messages  which  indicate  which instruction is being
       processed, and of progress when pulling images  from  a	registry,  and
       when writing the	output image.

   --retry=attempts
       Number of times to retry	pulling	or pushing images between the registry
       and local storage in case of failure. Default is	3.

   --retry-delay=duration
       Duration	of delay between retry attempts	when pulling or	pushing	images
       between	the registry and local storage in case of failure. The default
       is to start at two seconds and then exponentially back off.  The	 delay
       is used when this value is set, and no exponential back off occurs.

   --rewrite-timestamp
       When  generating	 new  layers 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 intermediate containers after a successful build (default	true).

   --runtime=path
       The  path  to an	alternate OCI-compatible runtime, which	is used	to run
       commands	specified by the RUN instruction.

       Note: You can also override the default runtime by  setting  the	 BUIL-
       DAH_RUNTIME   environment  variable.   export  BUILDAH_RUNTIME=/usr/lo-
       cal/bin/runc

   --runtime-flag=flag
       Adds global flags for the container  runtime.  To  list	the  supported
       flags, please consult the manpages of the selected container runtime.

       Default runtime flags can be added in containers.conf.

       Note:  Do  not  pass  the leading -- to the flag. To pass the runc flag
       --log-format json to buildah build, the option given is	--runtime-flag
       log-format=json.

   --sbom=preset
       Generate	 SBOMs	(Software  Bills Of Materials) for the output image by
       scanning	the working container and build	contexts using the named  com-
       bination	 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 pre-
       sets, 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-version

        "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 cy-
	 clonedx --output {OUTPUT}"
	  --sbom-merge-strategy=merge-cyclonedx-by-component-name-and-version

        "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 specified
       path in the output image.  There	is no default.

   --sbom-merge-strategy=method
       If  more	 than  one --sbom-scanner-command value	is being used, use the
       specified method	to merge the output from later	commands  with	output
       from earlier 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"	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.

        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
       others or copied	elsewhere.

   --sbom-scanner-image=image
       Generate	SBOMs using the	specified scanner image.

   --secret=id=id[,src=envOrFile][,env=ENV][,type=file | env]
       Pass secret information to be used in the  Containerfile	 for  building
       images in a safe	way that will not end up stored	in the final image, or
       be  seen	in other stages.  The value of the secret will be read from an
       environment variable or file named by the "id" option, or named by  the
       "src" option if it is specified,	or from	an environment variable	speci-
       fied by the "env" option. See EXAMPLES <#examples>.  The	secret will be
       mounted in the container	at /run/secrets/id by default.

       To  later  use  the  secret,  use the --mount flag in a RUN instruction
       within a	Containerfile:

       RUN --mount=type=secret,id=mysecret cat /run/secrets/mysecret

       The location of the secret in the container can be overridden using the
       "target", "dst",	or "destination" option	of the RUN --mount flag.

       RUN   --mount=type=secret,id=mysecret,target=/run/secrets/myothersecret
       cat /run/secrets/myothersecret

       Note:  changing the contents of secret files will not trigger a rebuild
       of layers that use said secrets.

   --security-opt=option
       Security	Options

        apparmor=unconfined : Turn off	apparmor confinement for the container

        apparmor=alternate-profile : Set the apparmor confinement profile for
	 the container

        label=user:USER     : Set the label user for the container processes

        label=role:ROLE     : Set the label role for the container processes

        label=type:TYPE     : Set the label process type  for	the  container
	 processes

        label=level:LEVEL   : Set the label level for the container processes

        label=filetype:TYPE : Set the label file type for the container files

        label=disable	     : Turn off	label separation for the container

        no-new-privileges    :	Disable	container processes from gaining addi-
	 tional	privileges

        seccomp=unconfined : Turn off seccomp confinement for the container

        seccomp=profile.json :	 JSON file to be used as  the  seccomp	filter
	 for the container.

   --shm-size=number[unit]
       Size   of  /dev/shm.  A	unit  can  be  b  (bytes),  k  (kibibytes),  m
       (mebibytes), or g (gibibytes).  If the unit is omitted, the system uses
       bytes. If the size is omitted, the default is 64m.   When  size	is  0,
       there  is  no  limit  on	 the amount of memory used for IPC by the con-
       tainer.	This option conflicts with --ipc=host.

   --skip-unused-stages
       Skip stages in multi-stage builds which don't affect the	target	stage.
       (Default: true).

   --source-date-epoch=seconds
       Set  the	"created" timestamp for	the built image	to this	number of sec-
       onds since the epoch (Unix time 0, i.e.,	 00:00:00  UTC	on  1  January
       1970)  (default	is to use the value set	in the SOURCE_DATE_EPOCH envi-
       ronment variable, or the	current	time if	it is not set).

       The "created" timestamp is written into the image's  configuration  and
       manifest	 when  the  image  is committed, so running the	same build two
       different times will ordinarily produce images  with  different	sha256
       hashes,	even  if  no  other changes were made to the Containerfile and
       build context.

       When this flag is set, a	SOURCE_DATE_EPOCH build	arg will  provide  its
       value for a stage in which it is	declared.

       When this flag is set, the image	configuration's	"created" timestamp is
       always  set to the time specified, which	should allow for identical im-
       ages to be built	at different times using the same set of inputs.

       When this flag is set, output written as	specified to the --output flag
       will bear exactly the specified timestamp.

       Conflicts with the similar --timestamp flag, which also sets its	speci-
       fied time on the	contents of new	layers.

   --squash
       Squash all of the image's new layers into a single new layer; any  pre-
       existing	layers are not squashed.

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

   --ssh=default | id[=socket>
       SSH agent socket	or keys	to expose to the build.	 The socket  path  can
       be left empty to	use the	value of default=$SSH_AUTH_SOCK

       To later	use the	ssh agent, use the --mount option in a RUN instruction
       within a	Containerfile:

       RUN --mount=type=ssh,id=id mycmd

   --tag, -t=imageName
       Specifies  the  name  which  is	assigned to the	resulting image	if the
       build process completes successfully.  If imageName does	not include  a
       registry	 name,	the  registry name localhost is	prepended to the image
       name.

   --target=stageName
       Set the target build stage to build.   When  building  a	 Containerfile
       with multiple build stages, --target can	be used	to specify an interme-
       diate  build  stage by name as the final	stage for the resulting	image.
       Commands	after the target stage is skipped.

   --timestamp=seconds
       Set the create timestamp	to seconds since epoch to allow	for  determin-
       istic  builds (defaults to current time). By default, the created time-
       stamp is	changed	and written into the image manifest with every commit,
       causing the image's sha256 hash to be different even if the sources are
       exactly the same	otherwise.  When --timestamp is	set, the created time-
       stamp is	always set to the time specified and  therefore	 not  changed,
       allowing	 the image's sha256 hash to remain the same. All files commit-
       ted to the layers of the	image is created with the timestamp.

       If the only instruction in a Containerfile is FROM, this	 flag  has  no
       effect.

   --tls-verify
       Require	HTTPS  and verify certificates when contacting registries (de-
       fault: true).  If explicitly set	to true, TLS verification is used.  If
       set to false, TLS verification is not used.  If not specified, TLS ver-
       ification is used unless	the target registry is listed as  an  insecure
       registry	in containers-registries.conf(5)

   --ulimit=type=soft-limit[:hard-limit]
       Specifies  resource limits to apply to processes	launched when process-
       ing RUN instructions. This option  can  be  specified  multiple	times.
       Recognized resource types include:
	 "core": maximum core dump size	(ulimit	-c)
	 "cpu":	maximum	CPU time (ulimit -t)
	 "data": maximum size of a process's data segment (ulimit -d)
	 "fsize": maximum size of new files (ulimit -f)
	 "locks": maximum number of file locks (ulimit -x)
	 "memlock": maximum amount of locked memory (ulimit -l)
	 "msgqueue": maximum amount of data in message queues (ulimit -q)
	 "nice": niceness adjustment (nice -n, ulimit -e)
	 "nofile": maximum number of open files	(ulimit	-n)
	 "nproc": maximum number of processes (ulimit -u)
	 "rss":	maximum	size of	a process's (ulimit -m)
	 "rtprio": maximum real-time scheduling	priority (ulimit -r)
	 "rttime":  maximum  amount  of	 real-time  execution between blocking
       syscalls
	 "sigpending": maximum number of pending signals (ulimit -i)
	 "stack": maximum stack	size (ulimit -s)

   --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.

   --unsetlabel=label
       Unset  the  image label,	causing	the label not to be inherited from the
       base image.

   --userns=how
       Sets the	configuration for user namespaces when handling	 RUN  instruc-
       tions.	The  configured	 value	can  be	"" (the	empty string) or "con-
       tainer" to indicate that	a new user namespace is	 created,  it  can  be
       "host"  to  indicate  that the user namespace in	which podman itself is
       being run is reused, or it can be the path to a user namespace which is
       already in use by another process.

   --userns-gid-map=mapping
       Directly	specifies a GID	mapping	to be used to set  ownership,  at  the
       filesystem  level,  on  the working container's contents.  Commands run
       when handling RUN instructions defaults to being	run in their own  user
       namespaces, configured using the	UID and	GID maps.

       Entries	in this	map take the form of one or more triples of a starting
       in-container GID, a corresponding starting host-level GID, and the num-
       ber of consecutive IDs which the	map entry represents.

       This option overrides the remap-gids setting in the options section  of
       /etc/containers/storage.conf.

       If  this	option is not specified, but a global --userns-gid-map setting
       is supplied, settings from the global option is used.

       If none of --userns-uid-map-user, --userns-gid-map-group, or  --userns-
       gid-map	are  specified,	but --userns-uid-map is	specified, the GID map
       is set to use the same numeric values as	the UID	map.

   --userns-gid-map-group=group
       Specifies that a	GID mapping to	be  used  to  set  ownership,  at  the
       filesystem  level, on the working container's contents, can be found in
       entries in the /etc/subgid  file	 which	correspond  to	the  specified
       group.	Commands  run when handling RUN	instructions defaults to being
       run in their own	user namespaces, configured  using  the	 UID  and  GID
       maps.   If  --userns-uid-map-user  is  specified, but --userns-gid-map-
       group is	not specified, podman assumes that the specified user name  is
       also  a	suitable group name to use as the default setting for this op-
       tion.

       NOTE: When this option is specified by a	rootless user,	the  specified
       mappings	 are relative to the rootless user namespace in	the container,
       rather than being relative to the host as it is when run	rootful.

   --userns-uid-map=mapping
       Directly	specifies a UID	mapping	to be used to set  ownership,  at  the
       filesystem  level,  on  the working container's contents.  Commands run
       when handling RUN instructions default to being run in their  own  user
       namespaces, configured using the	UID and	GID maps.

       Entries	in this	map take the form of one or more triples of a starting
       in-container UID, a corresponding starting host-level UID, and the num-
       ber of consecutive IDs which the	map entry represents.

       This option overrides the remap-uids setting in the options section  of
       /etc/containers/storage.conf.

       If  this	option is not specified, but a global --userns-uid-map setting
       is supplied, settings from the global option is used.

       If none of --userns-uid-map-user, --userns-gid-map-group, or  --userns-
       uid-map	are  specified,	but --userns-gid-map is	specified, the UID map
       is set to use the same numeric values as	the GID	map.

   --userns-uid-map-user=user
       Specifies that a	UID mapping to	be  used  to  set  ownership,  at  the
       filesystem  level, on the working container's contents, can be found in
       entries in the /etc/subuid file which correspond	to the specified user.
       Commands	run when handling RUN instructions defaults to	being  run  in
       their  own  user	namespaces, configured using the UID and GID maps.  If
       --userns-gid-map-group is specified, but	--userns-uid-map-user  is  not
       specified, podman assumes that the specified group name is also a suit-
       able user name to use as	the default setting for	this option.

       NOTE:  When  this option	is specified by	a rootless user, the specified
       mappings	are relative to	the rootless user namespace in the  container,
       rather than being relative to the host as it is when run	rootful.

   --uts=how
       Sets  the  configuration	 for UTS namespaces when handling RUN instruc-
       tions.  The configured value can	be ""  (the  empty  string)  or	 "con-
       tainer"	to  indicate that a new	UTS namespace to be created, or	it can
       be "host" to indicate that the UTS namespace in which podman itself  is
       being  run is reused, or	it can be the path to a	UTS namespace which is
       already in use by another process.

   --volume, -v=[HOST-DIR:CONTAINER-DIR[:OPTIONS]]
       Mount a host directory into containers when executing RUN  instructions
       during the build.

       The OPTIONS are a comma-separated list and can be one or	more of:

        [rw|ro]

        [z|Z|O]

        [U]

        [[r]shared|[r]slave|[r]private][1] <#Footnote1>

       The CONTAINER-DIR must be an absolute path such as /src/docs. The HOST-
       DIR  must  be an	absolute path as well. Podman bind-mounts the HOST-DIR
       to the specified	path when processing RUN instructions.

       You can specify multiple	 -v options to mount one or more mounts.

       You can add the :ro or :rw suffix to a volume to	mount it read-only  or
       read-write  mode,  respectively.	 By  default,  the volumes are mounted
       read-write.  See	examples.

       Chowning	Volume Mounts

       By default, Podman does not change the owner and	group of source	volume
       directories mounted. When running using user namespaces,	 the  UID  and
       GID  inside  the	namespace may correspond to another UID	and GID	on the
       host.

       The :U suffix tells Podman to use the correct host UID and GID based on
       the UID and GID within the namespace, to	change recursively  the	 owner
       and group of the	source volume.

       Warning use with	caution	since this modifies the	host filesystem.

       Labeling	Volume Mounts

       Labeling	 systems like SELinux require that proper labels are placed on
       volume content mounted into a container.	Without	a label, the  security
       system  might  prevent  the processes running inside the	container from
       using the content. By default, Podman does not change the labels	set by
       the OS.

       To change a label in the	container context, add one of these  two  suf-
       fixes :z	or :Z to the volume mount. These suffixes tell Podman to rela-
       bel  file objects on the	shared volumes.	The z option tells Podman that
       two containers share the	volume content.	As a result, Podman labels the
       content with a shared content label. Shared  volume  labels  allow  all
       containers  to  read/write content.  The	Z option tells Podman to label
       the content with	a private unshared label.  Only	the current  container
       can use a private volume.

       Note:  Do  not  relabel system files and	directories. Relabeling	system
       content might cause other confined services  on	the  host  machine  to
       fail.   For  these types	of containers, disabling SELinux separation is
       recommended.  The option	--security-opt label=disable disables  SELinux
       separation  for the container.  For example, if a user wanted to	volume
       mount their entire home directory into the build	containers, they  need
       to disable SELinux separation.

       $ podman	build --security-opt label=disable -v $HOME:/home/user .

       Overlay Volume Mounts

       The :O flag tells Podman	to mount the directory from the	host as	a tem-
       porary  storage using the Overlay file system. The RUN command contain-
       ers are allowed to modify contents within the mountpoint	and are	stored
       in the container	storage	in a separate directory.  In Overlay FS	 terms
       the  source directory is	the lower, and the container storage directory
       is the upper. Modifications to the mount	point are destroyed  when  the
       RUN command finishes executing, similar to a tmpfs mount	point.

       Any  subsequent	execution of RUN commands sees the original source di-
       rectory content,	any changes from previous RUN commands no  longer  ex-
       ists.

       One use case of the overlay mount is sharing the	package	cache from the
       host into the container to allow	speeding up builds.

       Note:

        Overlay mounts	are not	currently supported in rootless	mode.

        The  O	 flag  is  not	allowed	to be specified	with the Z or z	flags.
	 Content mounted into the container is labeled with the	private	label.
	 On SELinux systems, labels in the source directory needs to be	 read-
	 able  by  the	container  label. If not, SELinux container separation
	 must be disabled for the container to work.

        Modification of the directory volume mounted into the container  with
	 an overlay mount can cause unexpected failures. Do not	modify the di-
	 rectory until the container finishes running.

       By default bind mounted volumes are private. That means any mounts done
       inside  containers  are not be visible on the host and vice versa. This
       behavior	can be changed by specifying a volume mount propagation	 prop-
       erty.

       When  the  mount	 propagation  policy is	set to shared, any mounts com-
       pleted inside the container on that volume is visible to	both the  host
       and  container.	When the mount propagation policy is set to slave, one
       way mount propagation is	enabled	and any	mounts completed on  the  host
       for that	volume is visible only inside of the container.	To control the
       mount  propagation  property of volume use the :[r]shared, :[r]slave or
       :[r]private propagation flag. For mount	propagation  to	 work  on  the
       source  mount point (mount point	where source dir is mounted on)	has to
       have the	right propagation properties.  For shared volumes, the	source
       mount  point  has to be shared. And for slave volumes, the source mount
       has to be either	shared or slave. [1] <#Footnote1>

       Use df <source-dir> to determine	the source mount and then use  findmnt
       -o TARGET,PROPAGATION <source-mount-dir>	to determine propagation prop-
       erties of source	mount, if findmnt utility is not available, the	source
       mount  point  can  be  determined  by  looking  at  the	mount entry in
       /proc/self/mountinfo. Look at optional fields and see if	 any  propaga-
       tion  properties	 are  specified.   shared:X means the mount is shared,
       master:X	means the mount	is slave and if	nothing	is  there  that	 means
       the mount is private. [1] <#Footnote1>

       To  change  propagation	properties of a	mount point use	the mount com-
       mand. For example, to bind mount	the source  directory  /foo  do	 mount
       --bind /foo /foo	and mount --make-private --make-shared /foo. This con-
       verts  /foo  into  a shared mount point.	 The propagation properties of
       the source mount	can be changed directly. For  instance	if  /  is  the
       source mount for	/foo, then use mount --make-shared / to	convert	/ into
       a shared	mount.

EXAMPLES
       Build  named image and manifest list using specified Containerfile with
       default farm:

       $ podman	farm build --local -t name -f /path/to/containerfile .

       Build named image and manifest list using the specified farm:

       $ podman	farm build --farm myfarm -t name .

       Build named image and manifest list using the specified farm,  removing
       all images from farm nodes, after they are pushed to registry:

       $ podman	farm build --farm myfarm --cleanup -t name .

       Build  named images and manifest	list for specified platforms using de-
       fault farm:

       $ podman	farm build --platforms arm64,amd64 -t name .

SEE ALSO
       podman(1), podman-farm(1), buildah(1), containers-certs.d(5),  contain-
       ers-registries.conf(5), crun(1),	runc(8), useradd(8), Containerfile(5),
       containerignore(5)

HISTORY
       September  2023,	 Originally compiled by	Urvashi	Mohnani	<umohnani@red-
       hat.com>

FOOTNOTES
       1: The Podman project is	committed to inclusivity, a core value of open
       source. The master and slave mount propagation terminology used here is
       problematic and divisive, and needs  to	be  changed.   However,	 these
       terms are currently used	within the Linux kernel	and must be used as-is
       at  this	 time.	When the kernel	maintainers rectify this usage,	Podman
       will follow suit	immediately.

							  podman-farm-build(1)

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

home | help