containers.podman.podman_container 模块 – 管理 Podman 容器

注意

此模块是 containers.podman 集合 (版本 1.16.2) 的一部分。

如果您使用的是 ansible 包,则可能已经安装了此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install containers.podman。您需要其他要求才能使用此模块,请参阅 要求 获取详细信息。

要在 playbook 中使用它,请指定:containers.podman.podman_container

containers.podman 1.0.0 中的新增功能

概要

  • 启动、停止、重启和管理 Podman 容器

要求

在执行此模块的主机上需要以下要求。

  • podman

参数

参数

注释

annotation

字典

向容器添加注释。格式为键值对,可多次使用。

arch

字符串

设置容器的架构。覆盖将要拉取镜像的主机架构。例如,arm。

attach

列表 / 元素=字符串

附加到 STDIN、STDOUT 或 STDERR。Podman 中的默认值为 false。

选项

  • "stdin"

  • "stdout"

  • "stderr"

authfile

路径

身份验证文件的路径。默认为 ``${XDG_RUNTIME_DIR}/containers/auth.json``(远程命令不可用)您还可以通过设置 ``REGISTRY_AUTH_FILE`` 环境变量来覆盖身份验证文件的默认路径。 ``export REGISTRY_AUTH_FILE=path``

blkio_weight

整数

块 IO 权重(相对权重)接受 10 到 1000 之间的权重值

blkio_weight_device

字典

块 IO 权重(相对设备权重,格式为 DEVICE_NAME[:]WEIGHT)。

cap_add

别名:capabilities

列表 / 元素=字符串

要添加到容器的功能列表。

cap_drop

列表 / 元素=字符串

要从容器中删除的功能列表。

cgroup_conf

字典

在 cgroup v2 上运行时,指定要写入的 cgroup 文件及其值。

cgroup_parent

路径

容器 cgroup 将在其下创建的 cgroups 路径。如果路径不是绝对路径,则该路径被认为相对于 init 进程的 cgroups 路径。如果 cgroups 不存在,则将创建它们。

cgroupns

字符串

容器 cgroup 将在其下创建的 cgroups 路径。

cgroups

字符串

确定容器是否将创建 CGroups。有效值为 enabled 和 disabled,默认为 enabled。disabled 选项将强制容器不创建 CGroups,因此与 CGroup 选项 cgroupns 和 cgroup-parent 冲突。

chrootdirs

字符串

容器内被视为 chroot 目录的目录路径。

cidfile

路径

将容器 ID 写入文件

cmd_args

列表 / 元素=字符串

您想要传递给 podman 命令本身的任何其他命令选项,例如 --log-level=debug--syslog。这并非在容器中运行的命令,而是 podman 自身的选项。对于容器命令,请使用 _command_ 选项。

command

任意

覆盖容器的命令。可以是字符串或列表。

conmon_pidfile

路径

将 conmon 进程的 pid 写入文件。conmon 在与 Podman 分开的进程中运行,因此在使用 systemd 重启 Podman 容器时这是必要的。

cpu_period

整数

限制 CPU CFS(完全公平调度器)周期

cpu_quota

整数

限制 CPU CFS(完全公平调度器)配额

cpu_rt_period

整数

以微秒为单位限制 CPU 实时周期。限制容器的实时 CPU 使用率。此标志告诉内核将容器的实时 CPU 使用率限制为您指定的周期。

cpu_rt_runtime

整数

以微秒为单位限制 CPU 实时运行时间。此标志告诉内核限制给定 CPU 周期中实时任务可能消耗的时间量。

cpu_shares

整数

CPU 份额(相对权重)

cpus

字符串

CPU 数量。默认为 0.0,表示没有限制。

cpuset_cpus

字符串

允许执行的 CPU(0-3、0、1)

cpuset_mems

字符串

允许执行的内存节点 (MEM)(0-3、0、1)。仅在 NUMA 系统上有效。

debug

布尔值

返回其他信息,这些信息可能有助于调查。

选项

  • false ← (默认)

  • true

decryption_key

字符串

用于解密镜像的“密钥密码”。密钥可以指向密钥和/或证书。

delete_depend

布尔值

删除选定的容器并递归删除所有依赖它的容器。适用于“删除”命令。

选项

  • false

  • true

delete_time

字符串

强制停止容器前等待的秒数。使用 -1 表示无限等待。适用于“删除”命令。

delete_volumes

布尔值

删除与容器关联的匿名卷。这并不包括使用 podman volume create 创建的命名卷,也不包括 podman run 和 podman create 的 –volume 选项。

选项

  • false

  • true

detach

布尔值

分离模式运行容器

选项

  • false

  • true ← (默认)

detach_keys

字符串

覆盖分离容器的按键序列。格式为单个字符或 ctrl-值

device

列表 / 元素=字符串

向容器添加主机设备。格式为 <主机上的设备>[:<容器上的设备>][:<权限>](例如 device /dev/sdc:/dev/xvdc:rwm)

device_cgroup_rule

字符串

向 cgroup 允许的设备列表添加规则。规则应采用 Linux 内核文档 admin-guide/cgroup-v1/devices 中指定的格式。

device_read_bps

列表 / 元素=字符串

限制从设备读取速率(每秒字节数)(例如 device-read-bps /dev/sda:1mb)

device_read_iops

列表 / 元素=字符串

限制从设备读取速率(每秒 I/O 次数)(例如 device-read-iops /dev/sda:1000)

device_write_bps

列表 / 元素=字符串

限制写入设备的速率(每秒字节数)(例如 device-write-bps /dev/sda:1mb)

device_write_iops

列表 / 元素=字符串

限制写入设备的速率(每秒 I/O 次数)(例如 device-write-iops /dev/sda:1000)

dns

别名:dns_servers

列表 / 元素=字符串

设置自定义 DNS 服务器

dns_option

别名:dns_opts

字符串

设置自定义 DNS 选项

dns_search

别名:dns_search_domains

字符串

设置自定义 DNS 搜索域(如果不想设置搜索域,请使用空字符串作为 dns_search)

entrypoint

字符串

覆盖镜像的默认 ENTRYPOINT

env

字典

设置环境变量。此选项允许您指定任意环境变量,这些变量可用于将在容器内启动的进程。

env_file

别名:env_files

列表 / 元素=路径

读取由换行符分隔的环境变量文件。不支持幂等性。如果用户更改了包含环境变量的文件,则需要重新创建容器。该文件必须存在于运行实际 podman 的远程机器上,而不是运行 Ansible 的控制机器上。如果需要将文件从控制机器复制到远程机器,请使用 copy 或 slurp 模块。

env_host

布尔值

在容器中使用所有当前主机环境变量。默认为 false。

选项

  • false

  • true

env_merge

字典

预处理容器的默认环境变量

etc_hosts

别名:add_hosts

字典

主机到 IP 映射的字典,其中每个主机名都是字典中的一个键。每个主机名都将添加到容器的`/etc/hosts`文件中。

executable

字符串

如果 podman 可执行文件不在运行 podman 的机器上的 `$PATH` 中,则指定其路径。

默认: "podman"

expose

别名:exposed, exposed_ports

列表 / 元素=字符串

公开端口或端口范围(例如 expose “3300-3310”)以在主机系统上设置端口重定向。

force_delete

布尔值

删除容器时强制删除。

选项

  • false

  • true ← (默认)

force_restart

别名:restart

布尔值

强制重启容器。

选项

  • false ← (默认)

  • true

generate_systemd

字典

为容器生成 systemd 单元文件。

默认: {}

after

列表 / 元素=字符串

添加 systemd 单元 after (After=) 选项,用于对依赖项列表和此服务之间的排序进行依赖。

container_prefix

字符串

设置容器的 systemd 单元名称前缀。默认为“container”。

names

布尔值

在单元文件中使用容器的名称作为启动、停止和描述。默认为 true。

选项

  • false

  • true ← (默认)

new

布尔值

在单元启动时创建容器和 Pod,而不是期望它们已经存在。默认为“false”。有关更多信息,请参阅 podman-generate-systemd(1)。

选项

  • false ← (默认)

  • true

no_header

布尔值

不生成包含元数据(例如 Podman 版本和时间戳)的标头。从 podman 3.1.0 版本开始。

选项

  • false ← (默认)

  • true

路径

字符串

指定生成单元文件的目录的路径。此选项需要此参数。如果不存在,则将创建该目录。

pod_prefix

字符串

设置 Pod 的 systemd 单元名称前缀。默认为“pod”。

requires

列表 / 元素=字符串

设置 systemd 单元 requires (Requires=) 选项。类似于 wants,但声明更强的需求依赖关系。

restart_policy

字符串

指定服务的重启策略。重启策略必须是“no”、“on-success”、“on-failure”、“on-abnormal”、“on-watchdog”、“on-abort”或“always”之一。默认策略是“on-failure”。

选项

  • "no"

  • "on-success"

  • "on-failure"

  • "on-abnormal"

  • "on-watchdog"

  • "on-abort"

  • "always"

restart_sec

整数

设置 systemd 服务 restartsec 值。

separator

字符串

设置容器/Pod 的名称/ID 与前缀之间的 systemd 单元名称分隔符。默认为“-”(破折号)。

start_timeout

整数

使用给定值覆盖容器的默认启动超时。

stop_timeout

别名:time

整数

使用给定值覆盖容器的默认停止超时。在 4.0 版本之前称为 `time`。

wants

列表 / 元素=字符串

添加 systemd 单元 wants (Wants=) 选项,表示此服务(弱)依赖于它。

gidmap

列表 / 元素=字符串

使用提供的映射在新用户命名空间中运行容器。

gpus

字符串

要添加到容器的 GPU 设备。

group_add

别名:groups

列表 / 元素=字符串

添加要运行的附加组

group_entry

字符串

使用 –user 时自定义写入容器内 /etc/group 文件的条目。

health_startup_cmd

字符串

为容器设置启动健康检查命令。

health_startup_interval

字符串

设置启动健康检查的间隔。

health_startup_retries

整数

启动健康检查在重启容器之前允许的尝试次数。如果设置为 0,则容器永远不会重启。默认为 0。

health_startup_success

整数

启动健康检查成功并开始定期健康检查之前所需的成功运行次数。值为 0 表示任何成功都将开始定期健康检查。默认为 0。

health_startup_timeout

字符串

启动健康检查命令在标记为失败之前必须完成的最长时间。

healthcheck

别名:health_cmd

字符串

设置或更改容器的健康检查命令。

healthcheck_failure_action

别名:health_on_failure

字符串

容器被认为不健康时要采取的操作。操作必须是“none”、“kill”、“restart”或“stop”之一。默认策略是“none”。

选项

  • "none"

  • "kill"

  • "restart"

  • "stop"

healthcheck_interval

别名:health_interval

字符串

设置健康检查的间隔(值为 disable 将导致没有自动计时器设置)(默认“30s”)

healthcheck_retries

别名:health_retries

整数

健康检查被认为不健康之前允许的重试次数。默认值为 3。

healthcheck_start_period

别名:health_start_period

字符串

容器引导所需 的初始化时间。该值可以用时间格式表示,例如 2m3s。默认值为 0s

healthcheck_timeout

别名:health_timeout

字符串

在间隔被认为失败之前允许完成健康检查的最长时间。与 start-period 一样,该值可以用时间格式表示,例如 1m22s。默认值为 30s

hooks_dir

列表 / 元素=字符串

路径中的每个 .json 文件都为 Podman 容器配置一个钩子。有关 JSON 文件语法和钩子注入语义的更多详细信息,请参阅 oci-hooks(5)。可以多次设置。

hostname

字符串

容器主机名。设置在容器内可用的容器主机名。

hostuser

字符串

将主机上的用户帐户添加到容器的 /etc/passwd。用户名或 UID 必须存在于主机系统上。

http_proxy

布尔值

默认情况下,如果为 podman 进程设置了代理环境变量,则将其传递到容器中。可以通过将 http_proxy 选项设置为 false 来禁用此功能。传入的环境变量包括 http_proxy、https_proxy、ftp_proxy、no_proxy,以及这些变量的大写版本。默认为 true

选项

  • false

  • true

image

字符串

用于创建容器的存储库路径(或镜像名称)和标签。如果找不到镜像,则将从注册表中提取镜像。如果不包含标签,则将使用 latest

也可以是镜像 ID。如果是这种情况,则假定镜像在本地可用。

image_strict

布尔值

是否通过考虑包含注册表和命名空间的完整名称来比较幂等性中的镜像。

选项

  • false ← (默认)

  • true

image_volume

字符串

告诉 podman 如何处理内置镜像卷。选项为 bind、tmpfs 或 ignore(默认 bind)

选项

  • "bind"

  • "tmpfs"

  • "ignore"

init

布尔值

在容器内运行 init,它转发信号并收集进程。默认为 false。

选项

  • false

  • true

init_ctr

字符串

(仅限 Pod)。使用 Pod 时,创建一个 init 风格的容器,它在基础容器启动后但常规 Pod 容器启动之前运行。

选项

  • "once"

  • "always"

init_path

字符串

container-init 二进制文件的路径。

interactive

布尔值

即使未附加,也保持 STDIN 打开。默认为 false。设置为 true 时,即使未附加,也保持 stdin 打开。默认为 false。

选项

  • false

  • true

ip

字符串

为容器指定静态 IP 地址,例如“10.88.64.128”。只有在未通过“network:”指定要加入的其他 CNI 网络,并且容器未通过“network container:<name|id>”加入另一个容器的网络命名空间时才能使用。该地址必须位于默认 CNI 网络的池中(默认为 10.88.0.0/16)。

ip6

字符串

为容器指定静态 IPv6 地址

ipc

别名:ipc_mode

字符串

默认为为容器创建一个私有 IPC 命名空间(POSIX SysV IPC)

kernel_memory

字符串

内核内存限制(格式为 <number>[<unit>],其中 unit = b、k、m 或 g)注意 - 仅整数支持幂等性。

label

别名:labels

字典

向容器添加元数据,传递标签名称和值的字典

label_file

字符串

读取由换行符分隔的标签文件

log_driver

字符串

日志驱动程序。用于设置容器的日志驱动程序。例如 log_driver “k8s-file”。

选项

  • "k8s-file"

  • "journald"

  • "json-file"

log_level

字符串

Podman 的日志级别。高于指定级别(“debug”|“info”|“warn”|“error”|“fatal”|“panic”)的日志消息(默认值为 “error”)

选项

  • "debug"

  • "info"

  • "warn"

  • "error"

  • "fatal"

  • "panic"

log_opt

别名:log_options

字典

特定于日志驱动程序的选项。用于设置容器日志文件的路径。

max_size

字符串

指定日志文件的最大大小(例如 10mb)。

path

字符串

指定日志文件的路径(例如 /var/log/container/mycontainer.json)。

tag

字符串

为容器指定自定义日志标签。

mac_address

字符串

为容器指定 MAC 地址,例如 ‘92:d0:c6:0a:29:33’。请记住,它在同一个以太网网络中必须是唯一的。

memory

字符串

内存限制(格式为 10k,其中 unit = b、k、m 或 g)注意 - 仅整数支持幂等性。

memory_reservation

字符串

内存软限制(格式为 100m,其中 unit = b、k、m 或 g)注意 - 仅整数支持幂等性。

memory_swap

字符串

等于内存加交换空间的限制值。必须与 -m (–memory) 标志一起使用。交换空间限制应始终大于 -m (–memory) 值。默认情况下,交换空间限制将设置为 –memory 值的两倍。注意 - 仅整数支持幂等性。

memory_swappiness

整数

调整容器的内存交换行为。接受 0 到 100 之间的整数。

mount

别名:mounts

列表 / 元素=字符串

将文件系统挂载附加到容器。bind 或 tmpfs 例如 mount “type=bind,source=/path/on/host,destination=/path/in/container”

name

字符串 / 必需

容器的名称

network

别名:net, network_mode

列表 / 元素=字符串

设置容器的网络模式 * bridge 在默认桥接器上创建网络栈 * none 无网络 * container:<name|id> 重用另一个容器的网络栈 * host 使用 podman 主机网络栈。 * <network-name>|<network-id> 连接到用户定义的网络 * ns:<path> 要加入的网络命名空间的路径 * slirp4netns 使用 slirp4netns 创建用户网络栈。这是无根容器的默认值

network_aliases

别名:network_alias

列表 / 元素=字符串

为容器添加网络范围的别名。容器只能访问其加入的第一个网络上的别名。这是一个限制,将在以后的版本中删除。

no_healthcheck

布尔值

禁用容器的任何已定义的健康检查。

选项

  • false

  • true

no_hosts

布尔值

不为容器创建 /etc/hosts 默认值为 false。

选项

  • false

  • true

oom_kill_disable

布尔值

是否禁用容器的 OOM Killer。默认值为 false。

选项

  • false

  • true

oom_score_adj

整数

调整主机对容器的 OOM 偏好设置(接受 -1000 到 1000)

os

字符串

覆盖要拉取的镜像的操作系统,默认为主机操作系统。例如,windows。

passwd

布尔值

允许 Podman 在与 –user 选项结合使用时向 /etc/passwd 和 /etc/group 添加条目。这用于覆盖 Podman 提供的用户设置,以支持入口点配置,例如 libnss-extrausers。

选项

  • false

  • true

passwd_entry

字符串

自定义使用 –passwd 时写入容器内 /etc/passwd 文件的条目。

personality

字符串

Personality 通过 Linux personality(2) 设置执行域。

pid

别名:pid_mode

字符串

设置容器的 PID 模式

pid_file

路径

当指定 pidfile 位置时,容器进程的 PID 将写入 pidfile。

pids_limit

字符串

调整容器的 PIDs 限制。设置为 -1 以对容器具有无限的 PIDs。

platform

字符串

指定用于选择镜像的平台。

pod

字符串

在现有 pod 中运行容器。如果希望 podman 为您创建 pod,请在 pod 名称前加上 “new:”

pod_id_file

路径

在现有 pod 中运行容器并从指定文件读取 pod 的 ID。当容器在具有基础容器的 pod 中运行时,基础容器会先启动。

preserve_fd

列表 / 元素=字符串

将逗号分隔列表中指定的附加文件描述符传递给进程。

preserve_fds

字符串

将 N 个附加文件描述符传递给进程(除了 0、1、2)。总 FD 为 3+N。

privileged

布尔值

赋予此容器扩展权限。默认值为 false。

选项

  • false

  • true

publish

别名:ports, published, published_ports

列表 / 元素=字符串

将容器的端口或端口范围发布到主机。格式 - ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort | containerPort 如果仅设置 containerPort,则 hostPort 将由 Podman 随机选择。

publish_all

布尔值

将所有公开的端口发布到主机接口上的随机端口。默认值为 false。

选项

  • false

  • true

pull

字符串

拉取镜像策略。默认值为 ‘missing’。

选项

  • "missing"

  • "always"

  • "never"

  • "newer"

quadlet_dir

路径

写入 quadlet 文件的目录路径。默认情况下,对于 root 用户将设置为 /etc/containers/systemd/,对于非 root 用户将设置为 ~/.config/containers/systemd/

quadlet_file_mode

任意

quadlet 文件的权限。

可以将 quadlet_file_mode 指定为八进制数或符号模式(例如,u+rwxu=rw,g=r,o=r)。对于八进制数格式,您必须添加前导零,以便 Ansible 的 YAML 解析器知道它是八进制数(例如 064401777),或者将其用引号括起来(例如 '644''1777'),以便 Ansible 接收字符串并可以自行将字符串转换为数字。如果不遵循这些规则之一而直接给 Ansible 提供数字,则最终会得到十进制数,这将导致意外的结果。

如果未指定 quadlet_file_mode 并且 quadlet 文件**不存在**,则在设置新创建文件的模式时将使用默认 '0640' 掩码。

如果未指定 quadlet_file_mode 并且 quadlet 文件**存在**,则将使用现有文件的模式。

指定 quadlet_file_mode 是确保文件以正确的权限创建的最佳方法。

quadlet_filename

字符串

要写入的 quadlet 文件的名称。默认情况下,它采用 name 值。

quadlet_options

列表 / 元素=字符串

quadlet 文件的选项。提供通常的容器参数选项中缺少的内容,作为要添加的行列表。

rdt_class

字符串

Rdt-class 设置容器运行的服务类别 (CLOS 或 COS)。需要 root 权限。

read_only

布尔值

将容器的根文件系统以只读方式挂载。默认值为 false

选项

  • false

  • true

read_only_tmpfs

布尔值

如果容器以 –read-only 模式运行,则在 /run、/tmp 和 /var/tmp 上挂载可读写的 tmpfs。默认值为 true

选项

  • false

  • true

recreate

布尔值

与 present 和 started 状态一起使用以强制重新创建现有容器。

选项

  • false ← (默认)

  • true

requires

列表 / 元素=字符串

指定一个或多个需求。需求是将在此容器之前启动的依赖容器。可以使用名称或 ID 指定容器。

restart_policy

字符串

容器退出时要遵循的重启策略。如果通过 podman kill 或 podman stop 命令停止容器,则重启策略将不会生效。有效值为 * no - 退出时不重启容器 * on-failure[:max_retries] - 当容器以非 0 退出代码退出时重启容器,无限重试或直到达到可选的 max_retries 次数 * always - 无论状态如何,容器退出时都重启容器,无限重试

restart_time

字符串

重启时强制停止容器之前等待的秒数。使用 -1 表示无限等待。适用于“restarted”状态。

retry

整数

在出现故障的情况下,重试在注册表和本地存储之间拉取或推送镜像的次数。默认值为 3。

retry_delay

字符串

在出现故障的情况下,在注册表和本地存储之间拉取或推送镜像时,重试尝试之间的延迟持续时间。

rm

别名:remove, auto_remove

布尔值

容器退出时自动删除容器。默认值为 false。

选项

  • false

  • true

rmi

布尔值

容器退出后,删除镜像,除非其他容器正在使用它。暗示在新容器上使用 –rm。默认值为 false。

选项

  • false

  • true

rootfs

布尔值

如果为 true,则第一个参数指的是文件系统上的已展开容器。默认值为 false。

选项

  • false

  • true

sdnotify

字符串

确定如何使用 NOTIFY_SOCKET,如 systemd 和 Type=notify 一起传递。可以是 container、conmon、ignore。

seccomp_policy

字符串

指定用于选择 seccomp 配置文件的策略。

secrets

列表 / 元素=字符串

将命名的密钥添加到容器中。格式为 secret[,opt=opt...],有关更多详细信息,请参阅 文档

security_opt

列表 / 元素=字符串

安全选项。例如 security_opt “seccomp=unconfined”

shm_size

字符串

/dev/shm 的大小。格式为 <number><unit>。number 必须大于 0。Unit 可选,可以是 b(字节)、k(千字节)、m(兆字节)或 g(千兆字节)。如果省略单位,则系统使用字节。如果完全省略大小,则系统使用 64m

shm_size_systemd

字符串

systemd 专用 tmpfs 挂载点(例如 /run、/run/lock、/var/log/journal 和 /tmp)的大小。

sig_proxy

布尔值

将发送到 podman run 命令的信号代理到容器进程。SIGCHLD、SIGSTOP 和 SIGKILL 不会被代理。默认为 true。

选项

  • false

  • true

state

字符串

absent - 将停止并删除与指定名称匹配的容器。

present - 断言存在与名称和任何提供的配置参数匹配的容器。如果没有任何容器与名称匹配,则将创建一个容器。如果容器与名称匹配,但提供的配置不匹配,则将更新容器(如果可以)。如果无法更新,则将删除并使用请求的配置重新创建它。比较配置时将考虑镜像版本。使用 recreate 选项强制重新创建匹配的容器。

started - 断言存在一个与名称和任何提供的配置匹配的正在运行的容器。如果没有任何容器与名称匹配,则将创建一个容器并启动它。使用 recreate 始终重新创建匹配的容器,即使它正在运行。使用 force_restart 强制停止并重新启动匹配的容器。

stopped - 断言容器首先 present,然后如果容器正在运行则将其移至停止状态。

created - 断言容器存在且具有给定的配置。如果容器不存在,模块将创建它并将其保留在“created”状态。如果配置不匹配或设置了“recreate”选项,则将重新创建容器。

quadlet - 使用指定的配置编写 quadlet 文件。

选项

  • "absent"

  • "present"

  • "stopped"

  • "started" ← (默认)

  • "created"

  • "quadlet"

stop_signal

整数

停止容器的信号。默认为 SIGTERM。

stop_time

字符串

强制停止容器之前等待的秒数。使用 -1 表示无限等待。适用于“stopped”状态。

stop_timeout

整数

停止容器的超时时间(以秒为单位)。默认为 10。

subgidname

字符串

使用 /etc/subgid 文件中具有“name”的映射在新用户命名空间中运行容器。

subuidname

字符串

使用 /etc/subuid 文件中具有“name”的映射在新用户命名空间中运行容器。

sysctl

字典

在运行时配置命名空间内核参数

systemd

字符串

在 systemd 模式下运行容器。默认为 true。

timeout

整数

在 conmon 发送终止信号之前,容器允许运行的最长时间(以秒为单位)。默认情况下,容器运行直到退出或被“podman stop”停止。

timezone

字符串

设置容器中的时区。此标志采用基于区域的时区、GMT 时间以及 local,local 将容器中的时区设置为与主机匹配。有关有效的时区,请参阅 /usr/share/zoneinfo/。远程连接使用本地 containers.conf 作为默认值。

tls_verify

布尔值

拉取镜像时需要 HTTPS 并验证证书。

选项

  • false

  • true

tmpfs

字典

创建 tmpfs 挂载点。例如 tmpfs “/tmp” “rw,size=787448k,mode=1777”

tty

布尔值

分配一个伪 TTY。默认为 false。

选项

  • false

  • true

uidmap

列表 / 元素=字符串

使用提供的映射在新用户命名空间中运行容器。

ulimit

别名:ulimits

列表 / 元素=字符串

Ulimit 选项

umask

字符串

设置容器内的 umask。默认为 0022。远程连接使用本地 containers.conf 作为默认值。

unsetenv

列表 / 元素=字符串

取消设置容器的默认环境变量。

unsetenv_all

布尔值

取消设置容器的所有默认环境变量。

选项

  • false

  • true

user

字符串

设置使用的用户名或 UID,以及可选的指定命令的组名或 GID。

userns

别名:userns_mode

字符串

设置容器的用户命名空间模式。默认为 PODMAN_USERNS 环境变量。空值表示禁用用户命名空间。

uts

字符串

设置容器的 UTS 模式

variant

字符串

使用 VARIANT 代替容器镜像的默认架构变体。

volume

别名:volumes

列表 / 元素=字符串

创建绑定挂载。如果您指定 volume /HOST-DIR:/CONTAINER-DIR,podman 将主机上的 /HOST-DIR 绑定挂载到 podman 容器中的 /CONTAINER-DIR。

volumes_from

列表 / 元素=字符串

从指定的容器挂载卷。

workdir

别名:working_dir

字符串

容器内的工作目录。在容器内运行二进制文件的默认工作目录是根目录(/)。

示例

- name: Run container
  containers.podman.podman_container:
    name: container
    image: quay.io/bitnami/wildfly
    state: started

- name: Create a data container
  containers.podman.podman_container:
    name: mydata
    image: busybox
    volume:
      - /tmp/data

- name: Re-create a redis container with systemd service file generated in /tmp/
  containers.podman.podman_container:
    name: myredis
    image: redis
    command: redis-server --appendonly yes
    state: present
    recreate: true
    expose:
      - 6379
    volumes_from:
      - mydata
    generate_systemd:
      path: /tmp/
      restart_policy: always
      stop_timeout: 120
      names: true
      container_prefix: ainer

- name: Restart a container
  containers.podman.podman_container:
    name: myapplication
    image: redis
    state: started
    restart: true
    etc_hosts:
        other: "127.0.0.1"
    restart_policy: "no"
    device: "/dev/sda:/dev/xvda:rwm"
    ports:
        - "8080:9000"
        - "127.0.0.1:8081:9001/udp"
    env:
        SECRET_KEY: "ssssh"
        BOOLEAN_KEY: "yes"

- name: Container present
  containers.podman.podman_container:
    name: mycontainer
    state: present
    image: ubuntu:14.04
    command: "sleep 1d"

- name: Stop a container
  containers.podman.podman_container:
    name: mycontainer
    state: stopped

- name: Start 4 load-balanced containers
  containers.podman.podman_container:
    name: "container{{ item }}"
    recreate: true
    image: someuser/anotherappimage
    command: sleep 1d
  with_sequence: count=4

- name: remove container
  containers.podman.podman_container:
    name: ohno
    state: absent

- name: Writing output
  containers.podman.podman_container:
    name: myservice
    image: busybox
    log_options: path=/var/log/container/mycontainer.json
    log_driver: k8s-file

- name: Run container with complex command with quotes
  containers.podman.podman_container:
    name: mycontainer
    image: certbot/certbot
    command:
      - renew
      - --deploy-hook
      - "echo 1 > /var/lib/letsencrypt/complete"

- name: Create a Quadlet file
  containers.podman.podman_container:
    name: quadlet-container
    image: nginx
    state: quadlet
    quadlet_filename: custome-container
    quadlet_file_mode: '0640'
    device: "/dev/sda:/dev/xvda:rwm"
    ports:
      - "8080:80"
    volumes:
      - "/var/www:/usr/share/nginx/html"
    quadlet_options:
      - "AutoUpdate=registry"
      - "Pull=newer"
      - |
        [Install]
        WantedBy=default.target

返回值

常见的返回值已在 此处 记录,以下是此模块特有的字段

描述

container

字典

表示容器当前状态的事实。与 podman 检查输出匹配。

请注意,自 Ansible 2.8 起,事实是已注册变量的一部分。出于兼容性原因,事实也可以直接作为 podman_container 访问。请注意,返回的事实将在 Ansible 2.12 中删除。

如果 stateabsent,则为空。

返回:始终

Sample: "{ \"Id\": \"d38a8fcd61ab7e0754355e8fb3acc201e07770f3d1fd8fed36556941ac458ce\", \"Created\": \"2024-08-14T00:04:33.127266655+03:00\", \"Path\": \"/entrypoint.sh\", \"Args\": [ \"/entrypoint.sh\" ], \"State\": { \"OciVersion\": \"1.1.0+dev\", \"Status\": \"running\", \"Running\": true, \"Paused\": false, \"Restarting\": false, \"OOMKilled\": false, \"Dead\": false, \"Pid\": 2434164, \"ConmonPid\": 2434162, \"ExitCode\": 0, \"Error\": \"\", \"StartedAt\": \"2024-08-14T00:04:33.237286439+03:00\", \"FinishedAt\": \"0001-01-01T00:00:00Z\", \"Health\": { \"Status\": \"\", \"FailingStreak\": 0, \"Log\": null }, \"CgroupPath\": \"/user.slice/user-1000.slice/[email protected]/user.slice/libpod-d38a....scope\", \"CheckpointedAt\": \"0001-01-01T00:00:00Z\", \"RestoredAt\": \"0001-01-01T00:00:00Z\" }, \"Image\": \"fe2ba3a8ede60e5938e666b483c3a812ba902dac2303341930fbadc0482592b7\", \"ImageDigest\": \"sha256:1222865ed7489298ee28414ddedb63a0c6405938c3a38adf21c8656d7f532271\", \"ImageName\": \"registry/org/image:latest\", \"Rootfs\": \"\", \"Pod\": \"\", \"ResolvConfPath\": \"/run/user/1000/containers/overlay-containers/d38a.../userdata/resolv.conf\", \"HostnamePath\": \"/run/user/1000/containers/overlay-containers/d38a.../userdata/hostname\", \"HostsPath\": \"/run/user/1000/containers/overlay-containers/d38a.../userdata/hosts\", \"StaticDir\": \"/home/podman/.local/share/containers/storage/overlay-containers/d38a.../userdata\", \"OCIConfigPath\": \"/home/podman/.local/share/containers/....json\", \"OCIRuntime\": \"crun\", \"ConmonPidFile\": \"/run/user/1000/containers/overlay-containers/d38a.../userdata/conmon.pid\", \"PidFile\": \"/run/user/1000/containers/overlay-containers/d38a.../userdata/pidfile\", \"Name\": \"costapp\", \"RestartCount\": 0, \"Driver\": \"overlay\", \"MountLabel\": \"system_u:object_r:container_file_t:s0:c493,c986\", \"ProcessLabel\": \"system_u:system_r:container_t:s0:c493,c986\", \"AppArmorProfile\": \"\", \"EffectiveCaps\": [ \"CAP_CHOWN\", \"CAP_DAC_OVERRIDE\", \"CAP_FOWNER\", \"CAP_FSETID\", \"CAP_KILL\", \"CAP_NET_BIND_SERVICE\", \"CAP_SETFCAP\", \"CAP_SETGID\", \"CAP_SETPCAP\", \"CAP_SETUID\", \"CAP_SYS_CHROOT\" ], \"BoundingCaps\": [ \"CAP_CHOWN\", \"CAP_DAC_OVERRIDE\", \"CAP_FOWNER\", \"CAP_FSETID\", \"CAP_KILL\", \"CAP_NET_BIND_SERVICE\", \"CAP_SETFCAP\", \"CAP_SETGID\", \"CAP_SETPCAP\", \"CAP_SETUID\", \"CAP_SYS_CHROOT\" ], \"ExecIDs\": [], \"GraphDriver\": { \"Name\": \"overlay\", \"Data\": { \"LowerDir\": \"/home/podman/.local/share/containers/storage/overlay/29e2.../diff:...\", \"MergedDir\": \"/home/podman/.local/share/containers/storage/overlay/865909.../merged\", \"UpperDir\": \"/home/podman/.local/share/containers/storage/overlay/865909.../diff\", \"WorkDir\": \"/home/podman/.local/share/containers/storage/overlay/865909.../work\" } }, \"Mounts\": [], \"Dependencies\": [], \"NetworkSettings\": { \"EndpointID\": \"\", \"Gateway\": \"\", \"IPAddress\": \"\", \"IPPrefixLen\": 0, \"IPv6Gateway\": \"\", \"GlobalIPv6Address\": \"\", \"GlobalIPv6PrefixLen\": 0, \"MacAddress\": \"\", \"Bridge\": \"\", \"SandboxID\": \"\", \"HairpinMode\": false, \"LinkLocalIPv6Address\": \"\", \"LinkLocalIPv6PrefixLen\": 0, \"Ports\": { \"80/tcp\": [ { \"HostIp\": \"\", \"HostPort\": \"8888\" } ] }, \"SandboxKey\": \"/run/user/1000/netns/netns-2343321-795a-8289-14c0-77ee2556ebf1\" }, \"Namespace\": \"\", \"IsInfra\": false, \"IsService\": false, \"KubeExitCodePropagation\": \"invalid\", \"lockNumber\": 1417, \"Config\": { \"Hostname\": \"444a8274863a\", \"Domainname\": \"\", \"User\": \"\", \"AttachStdin\": false, \"AttachStdout\": false, \"AttachStderr\": false, \"Tty\": false, \"OpenStdin\": false, \"StdinOnce\": false, \"Env\": [ \"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\", \"container=podman\", \"HOME=/root\", \"HOSTNAME=444a8274863a\" ], \"Cmd\": null, \"Image\": \"registry/org/image:latest\", \"Volumes\": null, \"WorkingDir\": \"/\", \"Entrypoint\": \"/entrypoint.sh\", \"OnBuild\": null, \"Labels\": { \"io.buildah.version\": \"1.31.2\" }, \"Annotations\": { \"io.container.manager\": \"libpod\", \"org.opencontainers.image.stopSignal\": \"15\" }, \"StopSignal\": 15, \"HealthcheckOnFailureAction\": \"none\", \"CreateCommand\": [ \"podman\", \"run\", \"-d\", \"--name\", \"test\", \"-p\", \"8888:80\", \"registry/org/image:latest\" ], \"Umask\": \"0022\", \"Timeout\": 0, \"StopTimeout\": 10, \"Passwd\": true, \"sdNotifyMode\": \"container\" }, \"HostConfig\": { \"Binds\": [], \"CgroupManager\": \"systemd\", \"CgroupMode\": \"private\", \"ContainerIDFile\": \"\", \"LogConfig\": { \"Type\": \"journald\", \"Config\": null, \"Path\": \"\", \"Tag\": \"\", \"Size\": \"0B\" }, \"NetworkMode\": \"slirp4netns\", \"PortBindings\": { \"80/tcp\": [ { \"HostIp\": \"\", \"HostPort\": \"8888\" } ] }, \"RestartPolicy\": { \"Name\": \"\", \"MaximumRetryCount\": 0 }, \"AutoRemove\": false, \"VolumeDriver\": \"\", \"VolumesFrom\": null, \"CapAdd\": [], \"CapDrop\": [], \"Dns\": [], \"DnsOptions\": [], \"DnsSearch\": [], \"ExtraHosts\": [], \"GroupAdd\": [], \"IpcMode\": \"shareable\", \"Cgroup\": \"\", \"Cgroups\": \"default\", \"Links\": null, \"OomScoreAdj\": 0, \"PidMode\": \"private\", \"Privileged\": false, \"PublishAllPorts\": false, \"ReadonlyRootfs\": false, \"SecurityOpt\": [], \"Tmpfs\": {}, \"UTSMode\": \"private\", \"UsernsMode\": \"\", \"ShmSize\": 65536000, \"Runtime\": \"oci\", \"ConsoleSize\": [ 0, 0 ], \"Isolation\": \"\", \"CpuShares\": 0, \"Memory\": 0, \"NanoCpus\": 0, \"CgroupParent\": \"user.slice\", \"BlkioWeight\": 0, \"BlkioWeightDevice\": null, \"BlkioDeviceReadBps\": null, \"BlkioDeviceWriteBps\": null, \"BlkioDeviceReadIOps\": null, \"BlkioDeviceWriteIOps\": null, \"CpuPeriod\": 0, \"CpuQuota\": 0, \"CpuRealtimePeriod\": 0, \"CpuRealtimeRuntime\": 0, \"CpusetCpus\": \"\", \"CpusetMems\": \"\", \"Devices\": [], \"DiskQuota\": 0, \"KernelMemory\": 0, \"MemoryReservation\": 0, \"MemorySwap\": 0, \"MemorySwappiness\": 0, \"OomKillDisable\": false, \"PidsLimit\": 2048, \"Ulimits\": [ { \"Name\": \"RLIMIT_NOFILE\", \"Soft\": 524288, \"Hard\": 524288 }, { \"Name\": \"RLIMIT_NPROC\", \"Soft\": 256018, \"Hard\": 256018 } ], \"CpuCount\": 0, \"CpuPercent\": 0, \"IOMaximumIOps\": 0, \"IOMaximumBandwidth\": 0, \"CgroupConf\": null, }"

作者

  • Sagi Shnaidman (@sshnaidm)