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>