NAME
podman-create - Create a new containerSYNOPSIS
podman create [options] image [command [arg ...]]DESCRIPTION
Creates a writable container layer over the specified image and prepares it for running the specified command. The container ID is then printed to STDOUT. This is similar to podman run -d except the container is never started. You can then use the podman start container command to start the container at any point.IMAGE
The image is specified using transport:path format. If no transport is specified, the docker (container registry) transport will be used by default. For remote Podman, including Mac and Windows (excluding WSL2) machines, docker is the only allowed transport.An existing local directory path storing the manifest, layer tarballs and signatures as individual files. This is a non-standardized format, primarily useful for debugging or noninvasive container inspection.
$ podman save --format docker-dir fedora -o /tmp/fedora $ podman create dir:/tmp/fedora echo hello
An image reference stored in a remote container image registry. Example: "quay.io/podman/stable:latest". The reference can include a path to a specific registry; if it does not, the registries listed in registries.conf will be queried to find a matching image. By default, credentials from podman login (stored at $XDG_RUNTIME_DIR/containers/auth.json by default) will be used to authenticate; otherwise it falls back to using credentials in $HOME/.docker/config.json.
$ podman create registry.fedoraproject.org/fedora:latest echo hello
$ podman save --format docker-archive fedora -o /tmp/fedora $ podman create docker-archive:/tmp/fedora echo hello
An image in docker-reference format stored in the docker daemon internal storage. The docker-reference can also be an image ID (docker-daemon:algo:digest).
$ sudo docker pull fedora $ sudo podman create docker-daemon:docker.io/library/fedora echo hello
An image in a directory compliant with the "Open Container Image Layout Specification" at the specified path and specified with a tag.
$ podman save --format oci-archive fedora -o /tmp/fedora $ podman create oci-archive:/tmp/fedora echo hello
OPTIONS
--add-host=host:ip
Add a custom host-to-IP mapping (host:ip)--annotation=key=value
Add an annotation to the container. This option can be set multiple times.--arch=ARCH
Override the architecture, defaults to hosts, of the image to be pulled. For example, arm. Unless overridden, subsequent lookups of the same image in the local storage will match this architecture, regardless of the host.--attach, -a=stdin | stdout | stderr
Attach to STDIN, STDOUT or STDERR.--authfile=path
Path of the authentication file. Default is ${XDG_RUNTIME_DIR}/containers/auth.json, which is set using podman login. If the authorization state is not found there, $HOME/.docker/config.json is checked, which is set using docker login.--blkio-weight=weight
Block IO relative weight. The weight is a value between 10 and 1000.--blkio-weight-device=device:weight
Block IO relative device weight.--cap-add=capability
Add Linux capabilities.--cap-drop=capability
Drop Linux capabilities.--cgroup-conf=KEY=VALUE
When running on cgroup v2, specify the cgroup file to write to and its value. For example --cgroup-conf=memory.high=1073741824 sets the memory.high limit to 1GB.--cgroup-parent=path
Path to cgroups under which the cgroup for the container 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.--cgroupns=mode
Set the cgroup namespace mode for the container.- •
- host: use the host's cgroup namespace inside the container.
- •
- container:id: join the namespace of the specified container.
- •
- private: create a new cgroup namespace.
- •
- ns:path: join the namespace at the specified path.
--cgroups=how
Determines whether the container will create CGroups.--chrootdirs=path
Path to a directory inside the container that should be treated as a chroot directory. Any Podman managed file (e.g., /etc/resolv.conf, /etc/hosts, etc/hostname) that is mounted into the root directory will be mounted into that location as well. Multiple directories should be separated with a comma.--cidfile=file
Write the container ID to file.--conmon-pidfile=file
Write the pid of the conmon process to a file. As conmon runs in a separate process than Podman, this is necessary when using systemd to restart Podman containers. (This option is not available with the remote Podman client, including Mac and Windows (excluding WSL2) machines)--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.--cpu-quota=limit
Limit the CPU Completely Fair Scheduler (CFS) quota.--cpu-rt-period=microseconds
Limit the CPU real-time period in microseconds.--cpu-rt-runtime=microseconds
Limit the CPU real-time runtime in microseconds.--cpu-shares, -c=shares
CPU shares (relative weight).PID | container | CPU | CPU share |
100 | C0 | 0 | 100% of CPU0 |
101 | C1 | 1 | 100% of CPU1 |
102 | C1 | 2 | 100% of CPU2 |
--cpus=number
Number of CPUs. The default is 0.0 which means no limit. This is shorthand for --cpu-period and --cpu-quota, so you may only set either --cpus or --cpu-period and --cpu-quota.--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).--cpuset-mems=nodes
Memory nodes (MEMs) in which to allow execution (0-3, 0,1). Only effective on NUMA systems.--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).--device-cgroup-rule="type major:minor mode"
Add a rule to the cgroup allowed devices list. The rule is expected to be in the format specified in the Linux kernel documentation (Documentation/cgroup-v1/devices.txt):- type: a (all), c (char), or b (block);
- major and minor: either a number, or * for all;
- mode: a composition of r (read), w (write), and m (mknod(2)).
--device-read-bps=path:rate
Limit read rate (in bytes per second) from a device (e.g. --device-read-bps=/dev/sda:1mb).--device-read-iops=path:rate
Limit read rate (in IO operations per second) from a device (e.g. --device-read-iops=/dev/sda:1000).--device-write-bps=path:rate
Limit write rate (in bytes per second) to a device (e.g. --device-write-bps=/dev/sda:1mb).--device-write-iops=path:rate
Limit write rate (in IO operations per second) to a device (e.g. --device-write-iops=/dev/sda:1000).--disable-content-trust
This is a Docker-specific option to disable image verification to a container registry and is not supported by Podman. This option is a NOOP and provided solely for scripting compatibility.--dns=ipaddr
Set custom DNS servers.--dns-option=option
Set custom DNS options. Invalid if using --dns-option with --network that is set to none or container:id.--dns-search=domain
Set custom DNS search domains. Invalid if using --dns-search with --network that is set to none or container:id. Use --dns-search=. if you don't wish to set the search domain.--entrypoint="command" | '["command", arg1 , ...]'
Overwrite the default ENTRYPOINT of the image.--env, -e=env
Set environment variables.--env-file=file
Read in a line-delimited file of environment variables.--env-host
Use host environment inside of the container. See Environment note below for precedence. (This option is not available with the remote Podman client, including Mac and Windows (excluding WSL2) machines)--env-merge=env
Preprocess default environment variables for the containers. For example if image contains environment variable hello=world user can preprocess it using --env-merge hello=${hello}-some so new value will be hello=world-some.--expose=port
Expose a port, or a range of ports (e.g. --expose=3300-3310) to set up port redirection on the host system.--gidmap=container_gid:host_gid:amount
Run the container in a new user namespace using the supplied GID mapping. This option conflicts with the --userns and --subgidname options. This option provides a way to map host GIDs to container GIDs in the same way as --uidmap maps host UIDs to container UIDs. For details see --uidmap.--group-add=group | keep-groups
Assign additional groups to the primary user running within the container process.- •
- keep-groups is a special flag that tells Podman to keep the supplementary group access.
--health-cmd="command" | '["command", arg1 , ...]'
Set or alter a healthcheck command for a container. The command is a command to be executed inside your container that determines your container health. The command is required for other healthcheck options to be applied. A value of none disables existing healthchecks.--health-interval=interval
Set an interval for the healthchecks. An interval of disable results in no automatic timer setup. The default is 30s.--health-on-failure=action
Action to take once the container transitions to an unhealthy state. The default is none.- •
- none: Take no action.
- •
- kill: Kill the container.
- •
- restart: Restart the container. Do not combine the restart action with the --restart flag. When running inside of a systemd unit, consider using the kill or stop action instead to make use of systemd's restart policy.
- •
- stop: Stop the container.
--health-retries=retries
The number of retries allowed before a healthcheck is considered to be unhealthy. The default value is 3.--health-start-period=period
The initialization time needed for a container to bootstrap. The value can be expressed in time format like 2m3s. The default value is 0s.--health-timeout=timeout
The maximum time allowed to complete the healthcheck before an interval is considered failed. Like start-period, the value can be expressed in a time format such as 1m22s. The default value is 30s.--help
Print usage statement--hostname, -h=name
Container host name--hostuser=name
Add a user account to /etc/passwd from the host to the container. The Username or UID must exist on the host system.--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 should not use any proxy. Proxy environment variables specified for the container in any other way will override the values that would 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.) (This option is not available with the remote Podman client, including Mac and Windows (excluding WSL2) machines)--image-volume=bind | tmpfs | ignore
Tells Podman how to handle the builtin image volumes. Default is bind.- •
- bind: An anonymous named volume will be created and mounted into the container.
- •
- tmpfs: The volume is mounted onto the container as a tmpfs, which allows the users to create content that disappears when the container is stopped.
- •
- ignore: All volumes are just ignored and no action is taken.
--init
Run an init inside the container that forwards signals and reaps processes. The container-init binary is mounted at /run/podman-init. Mounting over /run will hence break container execution.--init-ctr=type
(Pods only). When using pods, create an init style container, which is run after the infra container is started but before regular pod containers are started. Init containers are useful for running setup operations for the pod's applications.--init-path=path
Path to the container-init binary.--interactive, -i
When set to true, keep stdin open even if not attached. The default is false.--ip=ipv4
Specify a static IPv4 address for the container, for example 10.88.64.128. This option can only be used if the container is joined to only a single network - i.e., --network=network-name is used at most once - and if the container is not joining another container's network namespace via --network=container:id. The address must be within the network's IP address pool (default 10.88.0.0/16 ).--ip6=ipv6
Specify a static IPv6 address for the container, for example fd46:db93:aa76:ac37::10. This option can only be used if the container is joined to only a single network - i.e., --network=network-name is used at most once - and if the container is not joining another container's network namespace via --network=container:id. The address must be within the network's IPv6 address pool.--ipc=ipc
Set the IPC namespace mode for a container. The default is to create a private IPC namespace.- •
- "": Use Podman's default, defined in containers.conf.
- •
- container:id: reuses another container's shared memory, semaphores, and message queues
- •
- host: use the host's shared memory, semaphores, and message queues inside the container. Note: the host mode gives the container full access to local shared memory and is therefore considered insecure.
- •
- none: private IPC namespace, with /dev/shm not mounted.
- •
- ns:path: path to an IPC namespace to join.
- •
- private: private IPC namespace. = shareable: private IPC namespace with a possibility to share it with other containers.
--label, -l=key=value
Add metadata to a container.--label-file=file
Read in a line-delimited file of labels.--link-local-ip=ip
Not implemented.--log-driver=driver
Logging driver for the container. Currently available options are k8s-file, journald, none and passthrough, with json-file aliased to k8s-file for scripting compatibility. (Default journald).$ podman info --format '{{ .Host.LogDriver }}' journald
--log-opt=name=value
Logging driver specific options.(e.g. --log-opt path=/var/log/container/mycontainer.json);
(e.g. --log-opt max-size=10mb);
(e.g. --log-opt tag="{{.ImageName}}". It supports the same keys as podman inspect --format. This option is currently supported only by the journald log driver.
--mac-address=address
Container network interface MAC address (e.g. 92:d0:c6:0a:29:33) This option can only be used if the container is joined to only a single network - i.e., --network= network-name is used at most once - and if the container is not joining another container's network namespace via --network=container:id.--memory, -m=number[unit]
Memory limit. A unit can be b (bytes), k (kibibytes), m (mebibytes), or g (gibibytes).--memory-reservation=number[unit]
Memory soft limit. A unit can be b (bytes), k (kibibytes), m (mebibytes), or g (gibibytes).--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).-m (--memory) By default, it is set to double the value of --memory.
--memory-swappiness=number
Tune a container's memory swappiness behavior. Accepts an integer between 0 and 100.--mount=type=TYPE,TYPE-SPECIFIC-OPTION[,...]
Attach a filesystem mount to the containere.g. type=bind,source=/path/on/host,destination=/path/in/container type=bind,src=/path/on/host,dst=/path/in/container,relabel=shared type=bind,src=/path/on/host,dst=/path/in/container,relabel=shared,U=true type=volume,source=vol1,destination=/path/in/container,ro=true type=tmpfs,tmpfs-size=512M,destination=/path/in/container type=image,source=fedora,destination=/fedora-image,rw=true type=devpts,destination=/dev/pts Common Options: · src, source: mount source spec for bind and volume. Mandatory for bind. · dst, destination, target: mount destination spec. Options specific to volume: · ro, readonly: true or false (default). . U, chown: true or false (default). Change recursively the owner and group of the source volume based on the UID and GID of the container. · idmap: true or false (default). If specified, create an idmapped mount to the target user namespace in the container. Options specific to image: · rw, readwrite: true or false (default). Options specific to bind: · ro, readonly: true or false (default). · bind-propagation: shared, slave, private, unbindable, rshared, rslave, runbindable, or rprivate(default). See also mount(2). . bind-nonrecursive: do not set up a recursive bind mount. By default it is recursive. . relabel: shared, private. · idmap: true or false (default). If specified, create an idmapped mount to the target user namespace in the container. . U, chown: true or false (default). Change recursively the owner and group of the source volume based on the UID and GID of the container. Options specific to tmpfs: · ro, readonly: true or false (default). · tmpfs-size: Size of the tmpfs mount in bytes. Unlimited by default in Linux. · tmpfs-mode: File mode of the tmpfs in octal. (e.g. 700 or 0700.) Defaults to 1777 in Linux. · tmpcopyup: Enable copyup from the image directory at the same location to the tmpfs. Used by default. · notmpcopyup: Disable copying files from the image to the tmpfs. . U, chown: true or false (default). Change recursively the owner and group of the source volume based on the UID and GID of the container. Options specific to devpts: · uid: UID of the file owner (default 0). · gid: GID of the file owner (default 0). · mode: permission mask for the file (default 600). · max: maximum number of PTYs (default 1048576).
--name=name
Assign a name to the container.- •
- UUID long identifier (“f78375b1c487e03c9438c729345e54db9d20cfa2ac1fc3494b6eb60872e74778”);
- •
- UUID short identifier (“f78375b1c487”);
- •
- Name (“jonah”).
--network=mode, --net
Set the network mode for the container.- •
- 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:
- •
- alias=name: Add network-scoped alias for the container.
- •
- ip=IPv4: Specify a static ipv4 address for this container.
- •
- ip=IPv6: Specify a static ipv6 address for this container.
- •
- mac=MAC: Specify a static mac address for this container.
- •
- interface_name: Specify a name for the created network interface inside the container.
- 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 should bind to (ipv4 traffic only).
- outbound_addr=IPv4: Specify the outbound ipv4 address slirp should bind to.
- outbound_addr6=INTERFACE: Specify the outbound interface slirp should bind to (ipv6 traffic only).
- outbound_addr6=IPv6: Specify the outbound ipv6 address slirp should bind to.
- port_handler=rootlesskit: Use rootlesskit for port forwarding. Default.
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.
- 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.
--network-alias=alias
Add a network-scoped alias for the container, setting the alias for all networks that the container joins. To set a name only for a specific network, use the alias option as described under the --network option. If the network has DNS enabled ( podman network inspect -f {{.DNSEnabled}} <name>), these aliases can be used for name resolution on the given network. This option can be specified multiple times. NOTE: When using CNI a container will only have access to aliases on the first network that it joins. This limitation does not exist with netavark/aardvark-dns.--no-healthcheck
Disable any defined healthchecks for container.--no-hosts
Do not create /etc/hosts for the container. By default, Podman will manage /etc/hosts, adding the container's own IP address and any hosts from --add-host. --no-hosts disables this, and the image's /etc/hosts will be preserved unmodified.--oom-kill-disable
Whether to disable OOM Killer for the container or not.--oom-score-adj=num
Tune the host's OOM preferences for containers (accepts values from -1000 to 1000).--os=OS
Override the OS, defaults to hosts, of the image to be pulled. For example, windows. Unless overridden, subsequent lookups of the same image in the local storage will match this OS, regardless of the host.--passwd-entry=ENTRY
Customize the entry that is written to the /etc/passwd file within the container when --passwd is used.--personality=persona
Personality sets the execution domain via Linux personality(2).--pid=mode
Set the PID namespace mode for the container. The default is to create a private PID namespace for the container.- •
- container:id: join another container's PID namespace;
- •
- host: use the host's PID namespace for the container. Note the host mode gives the container full access to local PID and is therefore considered insecure;
- •
- ns:path: join the specified PID namespace;
- •
- private: create a new namespace for the container (default).
--pidfile=path
When the pidfile location is specified, the container process' PID will be written to the pidfile. (This option is not available with the remote Podman client, including Mac and Windows (excluding WSL2) machines) If the pidfile option is not specified, the container process' PID will be written to /run/containers/storage/${storage-driver}-containers/$CID/userdata/pidfile.$ podman inspect --format '{{ .PidFile }}' $CID /run/containers/storage/${storage-driver}-containers/$CID/userdata/pidfile
--pids-limit=limit
Tune the container's pids limit. Set to -1 to have unlimited pids for the container. The default is 4096 on systems that support "pids" cgroup controller.--platform=OS/ARCH
Specify the platform for selecting the image. (Conflicts with --arch and --os) The --platform option can be used to override the current architecture and operating system. Unless overridden, subsequent lookups of the same image in the local storage will match this platform, regardless of the host.--pod=name
Run container in an existing pod. If you want Podman to make the pod for you, prefix the pod name with new:. To make a pod with more granular options, use the podman pod create command before creating a container. If a container is run with a pod, and the pod has an infra-container, the infra-container will be started before the container is.--pod-id-file=file
Run container in an existing pod and read the pod's ID from the specified file. If a container is run within a pod, and the pod has an infra-container, the infra-container will be started before the container is.--privileged
Give extended privileges to this container. The default is false.--publish, -p=[[ip:][hostPort]:]containerPort[/protocol]
Publish a container's port, or range of ports, to the host.--publish-all, -P
Publish all exposed ports to random ports on the host interfaces. The default is false.--pull=policy
Pull image policy. The default is missing.- •
- always: Always pull the image and throw an error if the pull fails.
- •
- missing: Pull the image only if it could not be found in the local containers storage. Throw an error if no image could be found and the pull fails.
- •
- never: Never pull the image but use the one from the local containers storage. Throw an error if no image could be 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 errors. Pull errors are suppressed if a local image was found.
--quiet, -q
Suppress output information when pulling images--read-only
Mount the container's root filesystem as read-only.--read-only-tmpfs
If container is running in --read-only mode, then mount a read-write tmpfs on /run, /tmp, and /var/tmp. The default is true.--replace
If another container with the same name already exists, replace and remove it. The default is false.--requires=container
Specify one or more requirements. A requirement is a dependency container that will be started before this container. Containers can be specified by name or ID, with multiple containers being separated by commas.--restart=policy
Restart policy to follow when containers exit. Restart policy will not take effect if a container is stopped via the podman kill or podman stop commands.- •
- no : Do not restart containers on exit
- •
- on-failure[:max_retries] : Restart containers when they exit with a non-zero exit code, retrying indefinitely or until the optional max_retries count is hit
- •
- always : Restart containers when they exit, regardless of status, retrying indefinitely
- •
- unless-stopped : Identical to always
--rm
Automatically remove the container when it exits. The default is false.--rootfs
If specified, the first argument refers to an exploded container on the file system.--sdnotify=container | conmon | ignore
Determines how to use the NOTIFY_SOCKET, as passed with systemd and Type=notify.--seccomp-policy=policy
Specify the policy to select the seccomp profile. If set to image, Podman will look for a "io.containers.seccomp.profile" label in the container-image config and use its value as a seccomp profile. Otherwise, Podman will follow the default policy by applying the default profile unless specified otherwise via --security-opt seccomp as described below.--secret=secret[,opt=opt ...]
Give the container access to a secret. Can be specified multiple times.- •
- type=mount|env : How the secret will be exposed to the container. Default mount.
- •
- target=target : Target of secret. Defaults to secret name.
- •
- uid=0 : UID of secret. Defaults to 0. Mount secret type only.
- •
- gid=0 : GID of secret. Defaults to 0. Mount secret type only.
- •
- mode=0 : Mode of secret. Defaults to 0444. Mount secret type only.
--security-opt=option
Security Options- •
- apparmor=unconfined : Turn off apparmor confinement for the container
- •
- apparmor=your-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
- •
- mask=/path/1:/path/2 : The paths to mask separated by a colon. A masked path cannot be accessed inside the container.
- •
- no-new-privileges : Disable container processes from gaining additional privileges
- •
- seccomp=unconfined : Turn off seccomp confinement for the container.
- •
- seccomp=profile.json : JSON file to be used as a seccomp filter. Note that the io.podman.annotations.seccomp annotation is set with the specified value as shown in podman inspect.
- •
- proc-opts=OPTIONS : Comma-separated list of options to use for the /proc mount. More details for the possible mount options are specified in the proc(5) man page.
- •
- 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. 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.
--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 container. This option conflicts with --ipc=host.--stop-signal=signal
Signal to stop a container. Default is SIGTERM.--stop-timeout=seconds
Timeout to stop a container. Default is 10. Remote connections use local containers.conf for defaults--subgidname=name
Run the container in a new user namespace using the map with name in the /etc/subgid file. If running rootless, the user needs to have the right to use the mapping. See subgid(5). This flag conflicts with --userns and --gidmap.--subuidname=name
Run the container in a new user namespace using the map with name in the /etc/subuid file. If running rootless, the user needs to have the right to use the mapping. See subuid(5). This flag conflicts with --userns and --uidmap.--sysctl=name=value
Configure namespaced kernel parameters at runtime.- •
- kernel.msgmax
- •
- kernel.msgmnb
- •
- kernel.msgmni
- •
- kernel.sem
- •
- kernel.shmall
- •
- kernel.shmmax
- •
- kernel.shmmni
- •
- kernel.shm_rmid_forced
- •
- Sysctls beginning with fs.mqueue.*
--systemd=true | false | always
Run container in systemd mode. The default is true.- •
- Podman mounts tmpfs file systems on the following directories
- •
- /run
- •
- /run/lock
- •
- /tmp
- •
- /sys/fs/cgroup/systemd
- •
- /var/lib/journal
- •
- Podman sets the default stop signal to SIGRTMIN+3.
- •
- Podman sets container_uuid environment variable in the container to the first 32 characters of the container id.
setsebool -P container_manage_cgroup true
--timeout=seconds
Maximum time a container is allowed to run before conmon sends it the kill signal. By default containers will run until they exit or are stopped by podman stop.--tls-verify
Require HTTPS and verify certificates when contacting registries (default: true). If explicitly set to true, TLS verification will be used. If set to false, TLS verification will not be used. If not specified, TLS verification will be used unless the target registry is listed as an insecure registry in containers-registries.conf(5)--tmpfs=fs
Create a tmpfs mount.$ podman create -d --tmpfs /tmp:rw,size=787448k,mode=1777 my_image
--tty, -t
Allocate a pseudo-TTY. The default is false.--tz=timezone
Set timezone in container. This flag takes area-based timezones, GMT time, as well as local, which sets the timezone in the container to match the host machine. See /usr/share/zoneinfo/ for valid timezones. Remote connections use local containers.conf for defaults--uidmap=container_uid:from_uid:amount
Run the container in a new user namespace using the supplied UID mapping. This option conflicts with the --userns and --subuidname options. This option provides a way to map host UIDs to container UIDs. It can be passed several times to map different ranges.--ulimit=option
Ulimit options. You can use host to copy the current configuration from the host.--umask=umask
Set the umask inside the container. Defaults to 0022. Remote connections use local containers.conf for defaults--unsetenv=env
Unset default environment variables for the container. Default environment variables include variables provided natively by Podman, environment variables configured by the image, and environment variables from containers.conf.--unsetenv-all
Unset all default environment variables for the container. Default environment variables include variables provided natively by Podman, environment variables configured by the image, and environment variables from containers.conf.--user, -u=user[:group]
Sets the username or UID used and, optionally, the groupname or GID for the specified command. Both user and group may be symbolic or numeric.--userns=mode
Set the user namespace mode for the container. It defaults to the PODMAN_USERNS environment variable. An empty value ("") means user namespaces are disabled unless an explicit mapping is set with the --uidmap and --gidmap options.Key | Host User | Container User |
"" | $UID | 0 (Default User account mapped to root user in container.) |
keep-id | $UID | $UID (Map user account to same UID within container.) |
auto | $UID | nil (Host User UID is not mapped into container.) |
nomap | $UID | nil (Host User UID is not mapped into container.) |
- •
- gidmapping=_CONTAINER_GID:HOSTGID:SIZE: to force a GID mapping to be present in the user namespace.
- •
- 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.
- •
- uidmapping=_CONTAINER_UID:HOSTUID:SIZE: to force a UID mapping to be present in the user namespace.
- •
- uid=UID: override the UID inside the container that will be used to map the current rootless user to.
- •
- gid=GID: override the GID inside the container that will be used to map the current rootless user to.
--uts=mode
Set the UTS namespace mode for the container. The following values are supported:- •
- host: use the host's UTS namespace inside the container.
- •
- private: create a new namespace for the container (default).
- •
- ns:[path]: run the container in the given existing UTS namespace.
- •
- container:[container]: join the UTS namespace of the specified container.
--variant=VARIANT
Use VARIANT instead of the default architecture variant of the container image. Some images can use multiple variants of the arm architectures, such as arm/v5 and arm/v7.--volume, -v=[[SOURCE-VOLUME|HOST-DIR:]CONTAINER-DIR[:OPTIONS]]
Create a bind mount. If -v /HOST-DIR:/CONTAINER-DIR is specified, Podman bind mounts /HOST-DIR from the host into /CONTAINER-DIR in the Podman container. Similarly, -v SOURCE-VOLUME:/CONTAINER-DIR will mount the named volume from the host into the container. If no such named volume exists, Podman will create one. If no source is given, the volume will be created as an anonymously named volume with a randomly generated name, and will be removed when the container is removed via the --rm flag or the podman rm --volumes command.- •
- rw|ro
- •
- z|Z
- •
- [O]
- •
- [U]
- •
- [no]copy
- •
- [no]dev
- •
- [no]exec
- •
- [no]suid
- •
- [r]bind
- •
- [r]shared|[r]slave|[r]private[r]unbindable
$ podman create --security-opt label=disable -v $HOME:/home/user fedora touch /home/user/file
- The `O` flag conflicts with other options listed above.
On SELinux systems, labels in the source directory must be readable by the container label. Usually containers can read/execute container_share_t and can read/write container_file_t. If unable to change the labels on a source volume, SELinux container separation must be disabled for the container to work.
- The source directory mounted into the container with an overlay mount should not be modified, it can cause unexpected failures. It is recommended to not modify the directory until the container finishes running.
--volumes-from=CONTAINER[:OPTIONS]
Mount volumes from the specified container(s). Used to share volumes between containers. The options is a comma-separated list with the following available elements:- •
- rw|ro
- •
- z
--workdir, -w=dir
Working directory inside the container.EXAMPLES
Create a container using a local image
$ podman create alpine ls
Create a container using a local image and annotate it
$ podman create --annotation HELLO=WORLD alpine ls
Create a container using a local image, allocating a pseudo-TTY, keeping stdin open and name it myctr
podman create -t -i --name myctr alpine ls
Set UID/GID mapping in a new user namespace
Running a container in a new user namespace requires a mapping of the uids and gids from the host.$ podman create --uidmap 0:30000:7000 --gidmap 0:30000:7000 fedora echo hello
Setting automatic user namespace separated containers
# podman create --userns=auto:size=65536 ubi8-init
Configure timezone in a container
$ podman create --tz=local alpine date $ podman create --tz=Asia/Shanghai alpine date $ podman create --tz=US/Eastern alpine date
Adding dependency containers
Podman will make sure the first container, container1, is running before the second container (container2) is started.$ podman create --name container1 -t -i fedora bash $ podman create --name container2 --requires container1 -t -i fedora bash $ podman start --attach container2
$ podman create --name container1 -t -i fedora bash $ podman create --name container2 -t -i fedora bash $ podman create --name container3 --requires container1,container2 -t -i fedora bash $ podman start --attach container3
Configure keep supplemental groups for access to volume
$ podman create -v /var/lib/design:/var/lib/design --group-add keep-groups ubi8
Configure execution domain for containers using personality flag
$ podman create --name container1 --personality=LINUX32 fedora bash
Create a container with external rootfs mounted as an overlay
$ podman create --name container1 --rootfs /path/to/rootfs:O bash
Create a container connected to two networks (called net1 and net2) with a static ip
$ podman create --network net1:ip=10.89.1.5 --network net2:ip=10.89.10.10 alpine ip addr
Rootless Containers
Podman runs as a non-root user on most systems. This feature requires that a new enough version of shadow-utils be installed. The shadow-utils package must include the newuidmap and newgidmap executables.ENVIRONMENT
Environment variables within containers can be set using multiple different options: This section describes the precedence.- •
- --env-host : Host environment of the process executing Podman is added.
- •
- --http-proxy: By default, several environment variables will be passed in from the host, such as http_proxy and no_proxy. See --http-proxy for details.
- •
- Container image : Any environment variables specified in the container image.
- •
- --env-file : Any environment variables specified via env-files. If multiple files specified, then they override each other in order of entry.
- •
- --env : Any environment variables specified will override previous settings.
$ export ENV1=a $ podman create --name ctr1 --env 'ENV*' alpine env $ podman start --attach ctr1 | grep ENV ENV1=a $ podman create --name ctr2 --env 'ENV*=b' alpine env $ podman start --attach ctr2 | grep ENV ENV*=b