github.com/hanks177/podman/v4@v4.1.3-0.20220613032544-16d90015bc83/docs/source/markdown/podman-pod-create.1.md (about)

     1  % podman-pod-create(1)
     2  
     3  ## NAME
     4  podman\-pod\-create - Create a new pod
     5  
     6  ## SYNOPSIS
     7  **podman pod create** [*options*] [*name*]
     8  
     9  ## DESCRIPTION
    10  
    11  Creates an empty pod, or unit of multiple containers, and prepares it to have
    12  containers added to it. The pod can be created with a specific name. If a name
    13  is not given a random name is generated. The pod id is printed to STDOUT. You
    14  can then use **podman create --pod `<pod_id|pod_name>` ...** to add containers
    15  to the pod, and **podman pod start `<pod_id|pod_name>`** to start the pod.
    16  
    17  The operator can identify a pod in three ways:
    18  UUID long identifier (“f78375b1c487e03c9438c729345e54db9d20cfa2ac1fc3494b6eb60872e74778”)
    19  UUID short identifier (“f78375b1c487”)
    20  Name (“jonah”)
    21  
    22  podman generates a UUID for each pod, and if a name is not assigned
    23  to the container with **--name** then a random string name will be generated
    24  for it. The name is useful any place you need to identify a pod.
    25  
    26  ## OPTIONS
    27  
    28  #### **--add-host**=_host_:_ip_
    29  
    30  Add a custom host-to-IP mapping (host:ip)
    31  
    32  Add a line to /etc/hosts. The format is hostname:ip. The **--add-host**
    33  option can be set multiple times.
    34  The /etc/hosts file is shared between all containers in the pod.
    35  
    36  #### **--cgroup-parent**=*path*
    37  
    38  Path to cgroups under which the cgroup for the pod will be created. If the path is not absolute, the path is considered to be relative to the cgroups path of the init process. Cgroups will be created if they do not already exist.
    39  
    40  #### **--cpus**=*amount*
    41  
    42  Set the total number of CPUs delegated to the pod. Default is 0.000 which indicates that there is no limit on computation power.
    43  
    44  #### **--cpuset-cpus**=*amount*
    45  
    46  Limit the CPUs to support execution. First CPU is numbered 0. Unlike --cpus this is of type string and parsed as a list of numbers
    47  
    48  Format is 0-3,0,1
    49  
    50  Examples of the List Format:
    51  
    52  0-4,9           # bits 0, 1, 2, 3, 4, and 9 set
    53  0-2,7,12-14     # bits 0, 1, 2, 7, 12, 13, and 14 set
    54  
    55  #### **--device**=_host-device_[**:**_container-device_][**:**_permissions_]
    56  
    57  Add a host device to the pod. Optional *permissions* parameter
    58  can be used to specify device permissions. It is a combination of
    59  **r** for read, **w** for write, and **m** for **mknod**(2).
    60  
    61  Example: **--device=/dev/sdc:/dev/xvdc:rwm**.
    62  
    63  Note: if _host_device_ is a symbolic link then it will be resolved first.
    64  The pod will only store the major and minor numbers of the host device.
    65  
    66  Note: the pod implements devices by storing the initial configuration passed by the user and recreating the device on each container added to the pod.
    67  
    68  Podman may load kernel modules required for using the specified
    69  device. The devices that Podman will load modules for when necessary are:
    70  /dev/fuse.
    71  
    72  #### **--device-read-bps**=*path*
    73  
    74  Limit read rate (bytes per second) from a device (e.g. --device-read-bps=/dev/sda:1mb)
    75  
    76  #### **--dns**=*ipaddr*
    77  
    78  Set custom DNS servers in the /etc/resolv.conf file that will be shared between all containers in the pod. A special option, "none" is allowed which disables creation of /etc/resolv.conf for the pod.
    79  
    80  #### **--dns-opt**=*option*
    81  
    82  Set custom DNS options in the /etc/resolv.conf file that will be shared between all containers in the pod.
    83  
    84  #### **--dns-search**=*domain*
    85  
    86  Set custom DNS search domains in the /etc/resolv.conf file that will be shared between all containers in the pod.
    87  
    88  #### **--exit-policy**=**continue** | *stop*
    89  
    90  Set the exit policy of the pod when the last container exits.  Supported policies are:
    91  
    92  | Exit Policy        | Description                                                                 |
    93  | ------------------ | --------------------------------------------------------------------------- |
    94  | *continue*         | The pod continues running when the last container exits. Used by default.   |
    95  | *stop*             | The pod is stopped when the last container exits. Used in `play kube`.      |
    96  
    97  #### **--gidmap**=*container_gid:host_gid:amount*
    98  
    99  GID map for the user namespace. Using this flag will run the container with user namespace enabled. It conflicts with the `--userns` and `--subgidname` flags.
   100  
   101  #### **--help**, **-h**
   102  
   103  Print usage statement.
   104  
   105  #### **--hostname**=name
   106  
   107  Set a hostname to the pod
   108  
   109  #### **--infra**
   110  
   111  Create an infra container and associate it with the pod. An infra container is a lightweight container used to coordinate the shared kernel namespace of a pod. Default: true.
   112  
   113  #### **--infra-command**=*command*
   114  
   115  The command that will be run to start the infra container. Default: "/pause".
   116  
   117  #### **--infra-conmon-pidfile**=*file*
   118  
   119  Write the pid of the infra container's **conmon** process to a file. As **conmon** runs in a separate process than Podman, this is necessary when using systemd to manage Podman containers and pods.
   120  
   121  #### **--infra-image**=*image*
   122  
   123  The custom image that will be used for the infra container.  Unless specified, Podman builds a custom local image which does not require pulling down an image.
   124  
   125  #### **--infra-name**=*name*
   126  
   127  The name that will be used for the pod's infra container.
   128  
   129  #### **--ip**=*ip*
   130  
   131  Specify a static IP address for the pod, for example **10.88.64.128**.
   132  This option can only be used if the pod is joined to only a single network - i.e., **--network=network-name** is used at most once -
   133  and if the pod is not joining another container's network namespace via **--network=container:_id_**.
   134  The address must be within the network's IP address pool (default **10.88.0.0/16**).
   135  
   136  To specify multiple static IP addresses per pod, set multiple networks using the **--network** option with a static IP address specified for each using the `ip` mode for that option.
   137  
   138  #### **--ip6**=*ipv6*
   139  
   140  Specify a static IPv6 address for the pod, for example **fd46:db93:aa76:ac37::10**.
   141  This option can only be used if the pod is joined to only a single network - i.e., **--network=network-name** is used at most once -
   142  and if the pod is not joining another container's network namespace via **--network=container:_id_**.
   143  The address must be within the network's IPv6 address pool.
   144  
   145  To specify multiple static IPv6 addresses per pod, set multiple networks using the **--network** option with a static IPv6 address specified for each using the `ip6` mode for that option.
   146  
   147  #### **--label**=*label*, **-l**
   148  
   149  Add metadata to a pod (e.g., --label com.example.key=value).
   150  
   151  #### **--label-file**=*label*
   152  
   153  Read in a line delimited file of labels.
   154  
   155  #### **--mac-address**=*address*
   156  
   157  Pod network interface MAC address (e.g. 92:d0:c6:0a:29:33)
   158  This option can only be used if the pod is joined to only a single network - i.e., **--network=_network-name_** is used at most once -
   159  and if the pod is not joining another container's network namespace via **--network=container:_id_**.
   160  
   161  Remember that the MAC address in an Ethernet network must be unique.
   162  The IPv6 link-local address will be based on the device's MAC address
   163  according to RFC4862.
   164  
   165  To specify multiple static MAC addresses per pod, set multiple networks using the **--network** option with a static MAC address specified for each using the `mac` mode for that option.
   166  
   167  
   168  #### **--name**=*name*, **-n**
   169  
   170  Assign a name to the pod.
   171  
   172  #### **--network**=*mode*, **--net**
   173  
   174  Set the network mode for the pod. Invalid if using **--dns**, **--dns-opt**, or **--dns-search** with **--network** that is set to **none** or **container:**_id_.
   175  
   176  Valid _mode_ values are:
   177  
   178  - **bridge[:OPTIONS,...]**: Create a network stack on the default bridge. This is the default for rootful containers. It is possible to specify these additional options:
   179    - **alias=name**: Add network-scoped alias for the container.
   180    - **ip=IPv4**: Specify a static ipv4 address for this container.
   181    - **ip=IPv6**: Specify a static ipv6 address for this container.
   182    - **mac=MAC**: Specify a static mac address for this container.
   183    - **interface_name**: Specify a name for the created network interface inside the container.
   184  
   185    For example to set a static ipv4 address and a static mac address, use `--network bridge:ip=10.88.0.10,mac=44:33:22:11:00:99`.
   186  - \<network name or ID\>[:OPTIONS,...]: Connect to a user-defined network; this is the network name or ID from a network created by **[podman network create](podman-network-create.1.md)**. Using the network name implies the bridge network mode. It is possible to specify the same options described under the bridge mode above. You can use the **--network** option multiple times to specify additional networks.
   187  - **none**: Create a network namespace for the container but do not configure network interfaces for it, thus the container has no network connectivity.
   188  - **container:**_id_: Reuse another container's network stack.
   189  - **host**: Do not create a network namespace, the container will use the host's network. Note: The host mode gives the container full access to local system services such as D-bus and is therefore considered insecure.
   190  - **ns:**_path_: Path to a network namespace to join.
   191  - **private**: Create a new namespace for the container. This will use the **bridge** mode for rootful containers and **slirp4netns** for rootless ones.
   192  - **slirp4netns[:OPTIONS,...]**: use **slirp4netns**(1) to create a user network stack. This is the default for rootless containers. It is possible to specify these additional options, they can also be set with `network_cmd_options` in containers.conf:
   193    - **allow_host_loopback=true|false**: Allow the slirp4netns to reach the host loopback IP (`10.0.2.2`). Default is false.
   194    - **mtu=MTU**: Specify the MTU to use for this network. (Default is `65520`).
   195    - **cidr=CIDR**: Specify ip range to use for this network. (Default is `10.0.2.0/24`).
   196    - **enable_ipv6=true|false**: Enable IPv6. Default is true. (Required for `outbound_addr6`).
   197    - **outbound_addr=INTERFACE**: Specify the outbound interface slirp should bind to (ipv4 traffic only).
   198    - **outbound_addr=IPv4**: Specify the outbound ipv4 address slirp should bind to.
   199    - **outbound_addr6=INTERFACE**: Specify the outbound interface slirp should bind to (ipv6 traffic only).
   200    - **outbound_addr6=IPv6**: Specify the outbound ipv6 address slirp should bind to.
   201    - **port_handler=rootlesskit**: Use rootlesskit for port forwarding. Default.
   202    Note: Rootlesskit changes the source IP address of incoming packets to an IP address in the container network namespace, usually `10.0.2.100`. If your application requires the real source IP address, e.g. web server logs, use the slirp4netns port handler. The rootlesskit port handler is also used for rootless containers when connected to user-defined networks.
   203    - **port_handler=slirp4netns**: Use the slirp4netns port forwarding, it is slower than rootlesskit but preserves the correct source IP address. This port handler cannot be used for user-defined networks.
   204  
   205  #### **--network-alias**=*alias*
   206  
   207  Add a network-scoped alias for the pod, setting the alias for all networks that the pod joins. To set a name only for a specific network, use the alias option as described under the **--network** option.
   208  Network aliases work only with the bridge networking mode. This option can be specified multiple times.
   209  NOTE: A container will only have access to aliases on the first network that it joins. This is a limitation that will be removed in a later release.
   210  
   211  #### **--no-hosts**
   212  
   213  Do not create _/etc/hosts_ for the pod.
   214  By default, Podman will manage _/etc/hosts_, adding the container's own IP address and any hosts from **--add-host**.
   215  **--no-hosts** disables this, and the image's _/etc/hosts_ will be preserved unmodified.
   216  This option conflicts with **--add-host**.
   217  
   218  #### **--pid**=*pid*
   219  
   220  Set the PID mode for the pod. The default is to create a private PID namespace for the pod. Requires the PID namespace to be shared via --share.
   221  
   222      host: use the host’s PID namespace for the pod
   223      ns: join the specified PID namespace
   224      private: create a new namespace for the pod (default)
   225  
   226  #### **--pod-id-file**=*path*
   227  
   228  Write the pod ID to the file.
   229  
   230  #### **--publish**, **-p**=[[_ip_:][_hostPort_]:]_containerPort_[/_protocol_]
   231  
   232  Publish a container's port, or range of ports, within this pod to the host.
   233  
   234  Both hostPort and containerPort can be specified as a range of ports.
   235  When specifying ranges for both, the number of container ports in the
   236  range must match the number of host ports in the range.
   237  
   238  If host IP is set to 0.0.0.0 or not set at all, the port will be bound on all IPs on the host.
   239  
   240  By default, Podman will publish TCP ports. To publish a UDP port instead, give
   241  `udp` as protocol. To publish both TCP and UDP ports, set `--publish` twice,
   242  with `tcp`, and `udp` as protocols respectively. Rootful containers can also
   243  publish ports using the `sctp` protocol.
   244  
   245  Host port does not have to be specified (e.g. `podman run -p 127.0.0.1::80`).
   246  If it is not, the container port will be randomly assigned a port on the host.
   247  
   248  Use **podman port** to see the actual mapping: `podman port $CONTAINER $CONTAINERPORT`.
   249  
   250  **Note:** You must not publish ports of containers in the pod individually,
   251  but only by the pod itself.
   252  
   253  **Note:** This cannot be modified once the pod is created.
   254  
   255  #### **--replace**
   256  
   257  If another pod with the same name already exists, replace and remove it.  The default is **false**.
   258  
   259  #### **--security-opt**=*option*
   260  
   261  Security Options
   262  
   263  - `apparmor=unconfined` : Turn off apparmor confinement for the pod
   264  - `apparmor=your-profile` : Set the apparmor confinement profile for the pod
   265  
   266  - `label=user:USER`     : Set the label user for the pod processes
   267  - `label=role:ROLE`     : Set the label role for the pod processes
   268  - `label=type:TYPE`     : Set the label process type for the pod processes
   269  - `label=level:LEVEL`   : Set the label level for the pod processes
   270  - `label=filetype:TYPE` : Set the label file type for the pod files
   271  - `label=disable`       : Turn off label separation for the pod
   272  
   273  Note: Labeling can be disabled for all pods/containers by setting label=false in the **containers.conf** (`/etc/containers/containers.conf` or `$HOME/.config/containers/containers.conf`) file.
   274  
   275  - `mask=/path/1:/path/2` : The paths to mask separated by a colon. A masked path
   276    cannot be accessed inside the containers within the pod.
   277  
   278  - `no-new-privileges` : Disable container processes from gaining additional privileges
   279  
   280  - `seccomp=unconfined` : Turn off seccomp confinement for the pod
   281  - `seccomp=profile.json` :  Whitelisted syscalls seccomp Json file to be used as a seccomp filter
   282  
   283  - `proc-opts=OPTIONS` : Comma-separated list of options to use for the /proc mount. More details for the
   284    possible mount options are specified in the **proc(5)** man page.
   285  
   286  - **unmask**=_ALL_ or _/path/1:/path/2_, or shell expanded paths (/proc/*): Paths to unmask separated by a colon. If set to **ALL**, it will unmask all the paths that are masked or made read only by default.
   287    The default masked paths are **/proc/acpi, /proc/kcore, /proc/keys, /proc/latency_stats, /proc/sched_debug, /proc/scsi, /proc/timer_list, /proc/timer_stats, /sys/firmware, and /sys/fs/selinux.**  The default paths that are read only are **/proc/asound, /proc/bus, /proc/fs, /proc/irq, /proc/sys, /proc/sysrq-trigger, /sys/fs/cgroup**.
   288  
   289  Note: Labeling can be disabled for all containers by setting label=false in the **containers.conf** (`/etc/containers/containers.conf` or `$HOME/.config/containers/containers.conf`) file.
   290  
   291  #### **--share**=*namespace*
   292  
   293  A comma-separated list of kernel namespaces to share. If none or "" is specified, no namespaces will be shared. The namespaces to choose from are cgroup, ipc, net, pid, uts. If the option is prefixed with a "+" then the namespace is appended to the default list, otherwise it replaces the default list. Defaults matches Kubernetes default (ipc, net, uts)
   294  
   295  #### **--share-parent**
   296  
   297  This boolean determines whether or not all containers entering the pod will use the pod as their cgroup parent. The default value of this flag is true. If you are looking to share the cgroup namespace rather than a cgroup parent in a pod, use **--share**
   298  
   299  Note: This options conflict with **--share=cgroup** since that would set the pod as the cgroup parent but enter the container into the same cgroupNS as the infra container.
   300  
   301  #### **--subgidname**=*name*
   302  
   303  Name for GID map from the `/etc/subgid` file. Using this flag will run the container with user namespace enabled. This flag conflicts with `--userns` and `--gidmap`.
   304  
   305  #### **--subuidname**=*name*
   306  
   307  Name for UID map from the `/etc/subuid` file. Using this flag will run the container with user namespace enabled. This flag conflicts with `--userns` and `--uidmap`.
   308  
   309  #### **--sysctl**=_name_=_value_
   310  
   311  Configure namespace kernel parameters for all containers in the pod.
   312  
   313  For the IPC namespace, the following sysctls are allowed:
   314  
   315  - kernel.msgmax
   316  - kernel.msgmnb
   317  - kernel.msgmni
   318  - kernel.sem
   319  - kernel.shmall
   320  - kernel.shmmax
   321  - kernel.shmmni
   322  - kernel.shm_rmid_forced
   323  - Sysctls beginning with fs.mqueue.\*
   324  
   325  Note: if the ipc namespace is not shared within the pod, these sysctls are not allowed.
   326  
   327  For the network namespace, only sysctls beginning with net.\* are allowed.
   328  
   329  Note: if the network namespace is not shared within the pod, these sysctls are not allowed.
   330  
   331  #### **--uidmap**=*container_uid*:*from_uid*:*amount*
   332  
   333  Run the container in a new user namespace using the supplied mapping. This
   334  option conflicts with the **--userns** and **--subuidname** options. This
   335  option provides a way to map host UIDs to container UIDs. It can be passed
   336  several times to map different ranges.
   337  
   338  #### **--userns**=*mode*
   339  
   340  Set the user namespace mode for all the containers in a pod. It defaults to the **PODMAN_USERNS** environment variable. An empty value ("") means user namespaces are disabled.
   341  
   342  Rootless user --userns=Key mappings:
   343  
   344  Key       | Host User |  Container User
   345  ----------|---------------|---------------------
   346  ""        |$UID           |0 (Default User account mapped to root user in container.)
   347  keep-id   |$UID           |$UID (Map user account to same UID within container.)
   348  auto      |$UID           | nil (Host User UID is not mapped into container.)
   349  nomap     |$UID           | nil (Host User UID is not mapped into container.)
   350  
   351  Valid _mode_ values are:
   352  
   353    - *auto[:*_OPTIONS,..._*]*: automatically create a namespace. It is possible to specify these options to `auto`:
   354  
   355    - *gidmapping=*_CONTAINER_GID:HOST_GID:SIZE_ to force a GID mapping to be present in the user namespace.
   356  
   357    - *size=*_SIZE_: to specify an explicit size for the automatic user namespace. e.g. `--userns=auto:size=8192`. If `size` is not specified, `auto` will estimate a size for the user namespace.
   358  
   359    - *uidmapping=*_CONTAINER_UID:HOST_UID:SIZE_ to force a UID mapping to be present in the user namespace.
   360  
   361    - *host*: run in the user namespace of the caller. The processes running in the container will have the same privileges on the host as any other process launched by the calling user (default).
   362  
   363    - *keep-id*: creates a user namespace where the current rootless user's UID:GID are mapped to the same values in the container. This option is not allowed for containers created by the root user.
   364  
   365    - *nomap*: creates a user namespace where the current rootless user's UID:GID are not mapped into the container. This option is not allowed for containers created by the root user.
   366  
   367  #### **--volume**, **-v**[=*[[SOURCE-VOLUME|HOST-DIR:]CONTAINER-DIR[:OPTIONS]]*]
   368  
   369  Create a bind mount. If you specify, ` -v /HOST-DIR:/CONTAINER-DIR`, Podman
   370  bind mounts `/HOST-DIR` in the host to `/CONTAINER-DIR` in the Podman
   371  container. Similarly, `-v SOURCE-VOLUME:/CONTAINER-DIR` will mount the volume
   372  in the host to the container. If no such named volume exists, Podman will
   373  create one. The `OPTIONS` are a comma-separated list and can be: <sup>[[1]](#Footnote1)</sup>  (Note when using the remote client, including Mac and Windows (excluding WSL2) machines, the volumes will be mounted from the remote server, not necessarily the client machine.)
   374  
   375  The _options_ is a comma-separated list and can be:
   376  
   377  * **rw**|**ro**
   378  * **z**|**Z**
   379  * [**r**]**shared**|[**r**]**slave**|[**r**]**private**[**r**]**unbindable**
   380  * [**r**]**bind**
   381  * [**no**]**exec**
   382  * [**no**]**dev**
   383  * [**no**]**suid**
   384  * [**O**]
   385  * [**U**]
   386  
   387  The `CONTAINER-DIR` must be an absolute path such as `/src/docs`. The volume
   388  will be mounted into the container at this directory.
   389  
   390  Volumes may specify a source as well, as either a directory on the host
   391  or the name of a named volume. If no source is given, the volume will be created as an
   392  anonymously named volume with a randomly generated name, and will be removed when
   393  the pod is removed via the `--rm` flag or `podman rm --volumes` commands.
   394  
   395  If a volume source is specified, it must be a path on the host or the name of a
   396  named volume. Host paths are allowed to be absolute or relative; relative paths
   397  are resolved relative to the directory Podman is run in. If the source does not
   398  exist, Podman will return an error. Users must pre-create the source files or
   399  directories.
   400  
   401  Any source that does not begin with a `.` or `/` will be treated as the name of
   402  a named volume. If a volume with that name does not exist, it will be created.
   403  Volumes created with names are not anonymous, and they are not removed by the `--rm`
   404  option and the `podman rm --volumes` command.
   405  
   406  You can specify multiple  **-v** options to mount one or more volumes into a
   407  pod.
   408  
   409    `Write Protected Volume Mounts`
   410  
   411  You can add `:ro` or `:rw` suffix to a volume to mount it read-only or
   412  read-write mode, respectively. By default, the volumes are mounted read-write.
   413  See examples.
   414  
   415    `Chowning Volume Mounts`
   416  
   417  By default, Podman does not change the owner and group of source volume
   418  directories mounted into containers. If a pod is created in a new user
   419  namespace, the UID and GID in the container may correspond to another UID and
   420  GID on the host.
   421  
   422  The `:U` suffix tells Podman to use the correct host UID and GID based on the
   423  UID and GID within the pod, to change recursively the owner and group of
   424  the source volume.
   425  
   426  **Warning** use with caution since this will modify the host filesystem.
   427  
   428    `Labeling Volume Mounts`
   429  
   430  Labeling systems like SELinux require that proper labels are placed on volume
   431  content mounted into a pod. Without a label, the security system might
   432  prevent the processes running inside the pod from using the content. By
   433  default, Podman does not change the labels set by the OS.
   434  
   435  To change a label in the pod context, you can add either of two suffixes
   436  `:z` or `:Z` to the volume mount. These suffixes tell Podman to relabel file
   437  objects on the shared volumes. The `z` option tells Podman that two pods
   438  share the volume content. As a result, Podman labels the content with a shared
   439  content label. Shared volume labels allow all containers to read/write content.
   440  The `Z` option tells Podman to label the content with a private unshared label.
   441  Only the current pod can use a private volume.
   442  
   443    `Overlay Volume Mounts`
   444  
   445     The `:O` flag tells Podman to mount the directory from the host as a
   446  temporary storage using the `overlay file system`. The pod processes
   447  can modify content within the mountpoint which is stored in the
   448  container storage in a separate directory. In overlay terms, the source
   449  directory will be the lower, and the container storage directory will be the
   450  upper. Modifications to the mount point are destroyed when the pod
   451  finishes executing, similar to a tmpfs mount point being unmounted.
   452  
   453    Subsequent executions of the container will see the original source directory
   454  content, any changes from previous pod executions no longer exist.
   455  
   456    One use case of the overlay mount is sharing the package cache from the
   457  host into the container to allow speeding up builds.
   458  
   459    Note:
   460  
   461       - The `O` flag conflicts with other options listed above.
   462  Content mounted into the container is labeled with the private label.
   463         On SELinux systems, labels in the source directory must be readable
   464  by the infra container label. Usually containers can read/execute `container_share_t`
   465  and can read/write `container_file_t`. If you cannot change the labels on a
   466  source volume, SELinux container separation must be disabled for the infra container/pod
   467  to work.
   468       - The source directory mounted into the pod with an overlay mount
   469  should not be modified, it can cause unexpected failures. It is recommended
   470  that you do not modify the directory until the container finishes running.
   471  
   472    `Mounts propagation`
   473  
   474  By default bind mounted volumes are `private`. That means any mounts done
   475  inside pod will not be visible on host and vice versa. One can change
   476  this behavior by specifying a volume mount propagation property. Making a
   477  volume `shared` mounts done under that volume inside pod will be
   478  visible on host and vice versa. Making a volume `slave` enables only one
   479  way mount propagation and that is mounts done on host under that volume
   480  will be visible inside container but not the other way around. <sup>[[1]](#Footnote1)</sup>
   481  
   482  To control mount propagation property of a volume one can use the [**r**]**shared**,
   483  [**r**]**slave**, [**r**]**private** or the [**r**]**unbindable** propagation flag.
   484  Propagation property can be specified only for bind mounted volumes and not for
   485  internal volumes or named volumes. For mount propagation to work the source mount
   486  point (the mount point where source dir is mounted on) has to have the right propagation
   487  properties. For shared volumes, the source mount point has to be shared. And for
   488  slave volumes, the source mount point has to be either shared or slave.
   489  <sup>[[1]](#Footnote1)</sup>
   490  
   491  If you want to recursively mount a volume and all of its submounts into a
   492  pod, then you can use the `rbind` option. By default the bind option is
   493  used, and submounts of the source directory will not be mounted into the
   494  pod.
   495  
   496  Mounting the volume with the `nosuid` options means that SUID applications on
   497  the volume will not be able to change their privilege. By default volumes
   498  are mounted with `nosuid`.
   499  
   500  Mounting the volume with the noexec option means that no executables on the
   501  volume will be able to executed within the pod.
   502  
   503  Mounting the volume with the nodev option means that no devices on the volume
   504  will be able to be used by processes within the pod. By default volumes
   505  are mounted with `nodev`.
   506  
   507  If the `<source-dir>` is a mount point, then "dev", "suid", and "exec" options are
   508  ignored by the kernel.
   509  
   510  Use `df <source-dir>` to figure out the source mount and then use
   511  `findmnt -o TARGET,PROPAGATION <source-mount-dir>` to figure out propagation
   512  properties of source mount. If `findmnt` utility is not available, then one
   513  can look at the mount entry for the source mount point in `/proc/self/mountinfo`. Look
   514  at `optional fields` and see if any propagation properties are specified.
   515  `shared:X` means mount is `shared`, `master:X` means mount is `slave` and if
   516  nothing is there that means mount is `private`. <sup>[[1]](#Footnote1)</sup>
   517  
   518  To change propagation properties of a mount point use `mount` command. For
   519  example, if one wants to bind mount source directory `/foo` one can do
   520  `mount --bind /foo /foo` and `mount --make-private --make-shared /foo`. This
   521  will convert /foo into a `shared` mount point. Alternatively one can directly
   522  change propagation properties of source mount. Say `/` is source mount for
   523  `/foo`, then use `mount --make-shared /` to convert `/` into a `shared` mount.
   524  
   525  Note: if the user only has access rights via a group, accessing the volume
   526  from inside a rootless pod will fail.
   527  
   528  #### **--volumes-from**[=*CONTAINER*[:*OPTIONS*]]
   529  
   530  Mount volumes from the specified container(s). Used to share volumes between
   531  containers and pods. The *options* is a comma-separated list with the following available elements:
   532  
   533  * **rw**|**ro**
   534  * **z**
   535  
   536  Mounts already mounted volumes from a source container into another
   537  pod. You must supply the source's container-id or container-name.
   538  To share a volume, use the --volumes-from option when running
   539  the target container. You can share volumes even if the source container
   540  is not running.
   541  
   542  By default, Podman mounts the volumes in the same mode (read-write or
   543  read-only) as it is mounted in the source container.
   544  You can change this by adding a `ro` or `rw` _option_.
   545  
   546  Labeling systems like SELinux require that proper labels are placed on volume
   547  content mounted into a pod. Without a label, the security system might
   548  prevent the processes running inside the container from using the content. By
   549  default, Podman does not change the labels set by the OS.
   550  
   551  To change a label in the pod context, you can add `z` to the volume mount.
   552  This suffix tells Podman to relabel file objects on the shared volumes. The `z`
   553  option tells Podman that two entities share the volume content. As a result,
   554  Podman labels the content with a shared content label. Shared volume labels allow
   555  all containers to read/write content.
   556  
   557  If the location of the volume from the source container overlaps with
   558  data residing on a target pod, then the volume hides
   559  that data on the target.
   560  
   561  
   562  ## EXAMPLES
   563  
   564  ```
   565  $ podman pod create --name test
   566  
   567  $ podman pod create mypod
   568  
   569  $ podman pod create --infra=false
   570  
   571  $ podman pod create --infra-command /top toppod
   572  
   573  $ podman pod create --publish 8443:443
   574  
   575  $ podman pod create --network slirp4netns:outbound_addr=127.0.0.1,allow_host_loopback=true
   576  
   577  $ podman pod create --network slirp4netns:cidr=192.168.0.0/24
   578  
   579  $ podman pod create --network net1:ip=10.89.1.5 --network net2:ip=10.89.10.10
   580  ```
   581  
   582  ## SEE ALSO
   583  **[podman(1)](podman.1.md)**, **[podman-pod(1)](podman-pod.1.md)**, **[podman-play-kube(1)](podman-play-kube.1.md)**, **containers.conf(1)**
   584  
   585  
   586  ## HISTORY
   587  July 2018, Originally compiled by Peter Hunt <pehunt@redhat.com>