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  (This  option is not	available with
	 the remote Podman client. On Podman machine setup (i.e	macOS and Win-
	 dows) path must exists	on the machine VM)

        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.

   --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	used without changes.

       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.

   --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 container for RUN instruc-
       tions.

       By default, Buildah 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.

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

       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=path
       Pass  secret  information used in the Containerfile for building	images
       in a safe way that are not stored in the	final image,  or  be  seen  in
       other  stages.	The  secret is mounted in the container	at the default
       location	of /run/secrets/id.

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

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

   --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   : Not supported

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

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

   --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+14.3.quarterly>

home | help