containers_manager

针对容器的 Podman 资源管理器子类。

class ContainersManager(client: APIClient = None)[source]

基类: RunMixin, CreateMixin, Manager

容器资源的专用管理器。

初始化 Manager() 对象。

参数:

client – 配置为连接到 Podman 服务的 APIClient()。

create(image: Image | str, command: str | List[str] | None = None, **kwargs) Container

创建容器。

参数:
  • image – 要运行的镜像。

  • command – 在容器中运行的命令。

关键字参数:
  • auto_remove (bool) – 容器进程退出时,在守护进程端启用自动删除容器的功能。

  • blkio_weight_device (Dict[str, Any]) – 块 IO 权重(相对设备权重),格式为:[{“Path”: “device_path”, “Weight”: weight}]。

  • blkio_weight (int) – 块 IO 权重(相对权重),接受 10 到 1000 之间的权重值。

  • cap_add (List[str]) – 添加内核功能。例如:[“SYS_ADMIN”, “MKNOD”]。

  • cap_drop (List[str]) – 删除内核功能。

  • cgroup_parent (str) – 覆盖默认的父 cgroup。

  • cpu_count (int) – 可用 CPU 数量(仅限 Windows)。

  • cpu_percent (int) – 可用 CPU 百分比(仅限 Windows)。

  • cpu_period (int) – CPU 周期的长度(微秒)。

  • cpu_quota (int) – 容器在一个 CPU 周期内可以获得的 CPU 时间(微秒)。

  • cpu_rt_period (int) – 限制 CPU 实时周期(微秒)。

  • cpu_rt_runtime (int) – 限制 CPU 实时运行时间(微秒)。

  • cpu_shares (int) – CPU 份额(相对权重)。

  • cpuset_cpus (str) – 允许执行的 CPU(0-3、0、1)。

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

  • detach (bool) – 在后台运行容器并返回 Container 对象。

  • device_cgroup_rules (List[str]) – 要应用于容器的 cgroup 规则列表。

  • device_read_bps – 限制从设备读取速率(每秒字节数),格式为:[{“Path”: “device_path”, “Rate”: rate}]

  • device_read_iops – 限制从设备读取速率(每秒 IO 次数)。

  • device_write_bps – 限制向设备写入速率(每秒字节数)。

  • device_write_iops – 限制向设备写入速率(每秒 IO 次数)。

  • devices (List[str]) –

    将主机设备公开给容器,作为 List[str],格式为 <path_on_host>:<path_in_container>:<cgroup_permissions>。

    例如

    /dev/sda:/dev/xvda:rwm 允许容器通过容器内的名为 /dev/xvda 的节点,对主机的 /dev/sda 进行读写访问。

  • dns (List[str]) – 设置自定义 DNS 服务器。

  • dns_opt (List[str]) – 要添加到容器的 resolv.conf 文件中的其他选项。

  • dns_search (List[str]) – DNS 搜索域。

  • domainname (Union[str, List[str]]) – 设置自定义 DNS 搜索域。

  • entrypoint (Union[str, List[str]]) – 容器的入口点。

  • environment (Union[Dict[str, str], List[str]) – 要在容器内设置的环境变量,可以是字典或 List[str],格式为 [“SOMEVARIABLE=xxx”, “SOMEOTHERVARIABLE=xyz”]。

  • extra_hosts (Dict[str, str]) – 要在容器内解析的其他主机名,作为主机名到 IP 地址的映射。

  • group_add (List[str]) – 容器进程将以其运行的其他组名称和/或 ID 列表。

  • healthcheck (Dict[str,Any]) – 指定要执行的测试,以检查容器是否健康。

  • health_check_on_failure_action (int) – 如果健康检查失败,则指定要执行的操作。

  • hostname (str) – 容器的可选主机名。

  • init (bool) – 在容器内运行一个 init,它转发信号并收集进程。

  • init_path (str) – docker-init 二进制文件的路径。

  • ipc_mode (str) – 设置容器的 IPC 模式。

  • isolation (str) – 要使用的隔离技术。默认值:None

  • kernel_memory (int or str) – 内核内存限制。

  • labels (Union[Dict[str, str], List[str]) – 名称-值标签的字典(例如 {“label1”: “value1”, “label2”: “value2”})或要设置为空值的标签名称列表(例如 [“label1”, “label2”])。

  • links (Optional[Dict[str, str]]) – 使用 {‘container’: ‘alias’} 格式的链接映射。别名是可选的。此字典中声明的容器将使用提供的别名链接到新容器。默认值:None。

  • log_config (LogConfig) – 日志记录配置。

  • lxc_config (Dict[str, str]) – LXC 配置。

  • mac_address (str) – 要分配给容器的 MAC 地址。

  • mem_limit (Union[int, str]) – 内存限制。接受浮点值(表示以字节为单位创建的容器的内存限制)或带有单位标识字符的字符串(100000b、1000k、128m、1g)。如果指定了一个没有单位字符的字符串,则假设字节是预期的单位。

  • mem_reservation (Union[int, str]) – 内存软限制。

  • mem_swappiness (int) – 微调容器的内存交换行为。接受 0 到 100 之间的数字。

  • memswap_limit (Union[int, str]) – 容器允许使用的最大内存 + 交换空间量。

  • mounts (List[Mount]) –

    要添加到容器的挂载点的规范。比卷更强大的替代方案。列表中的每个项目都应为 Mount 对象。例如

    [

    {

    “type”: “bind”,

    ”source”: “/a/b/c1”,

    ”target” “/d1”,

    ”read_only”: True,

    ”relabel”: “Z”

    },

    {

    “type”: “tmpfs”,

    # 如果未传递此参数,则将创建常规目录

    # 而不是 tmpfs 挂载点!!!

    # 因为这会导致在 /proc/self/mountinfo 中

    # 有无效条目

    ”source”: “tmpfs”,

    ”target” “/d2”,

    ”size”: “100k”,

    ”chown”: True

    }

    ]

  • name (str) – 此容器的名称。

  • nano_cpus (int) – 以 1e-9 个 CPU 为单位的 CPU 配额。

  • networks (Dict[str, Dict[str, Union[str, List[str]]) –

    在容器创建期间将连接到容器的网络。网络配置的值可以是

    • 字符串

    • 字符串列表(例如别名)

  • network_disabled (bool) – 禁用网络。

  • network_mode (str) –

    以下选项之一:

    • bridge:在桥接网络上为容器创建一个新的网络栈。

    • none:此容器没有网络。

    • container:<name|id>:重用另一个容器的网络栈。

    • host:使用主机网络栈。

    • ns:<path>:用户定义的 netns 路径。

    与 network 不兼容。

  • oom_kill_disable (bool) – 是否禁用 OOM killer。

  • oom_score_adj (int) – 一个整数值,包含赋予容器的分数,以便微调 OOM killer 偏好。

  • pid_mode (str) – 如果设置为 host,则在容器内使用主机 PID 命名空间。

  • pids_limit (int) – 微调容器的 pids 限制。设置为 -1 表示无限制。

  • platform (str) – 格式为 os[/arch[/variant]] 的平台。仅当方法需要拉取请求的镜像时使用。

  • ports (Dict[str, Union[int, Tuple[str, int], List[int], Dict[str, Union[int, Tuple[str, int], List[int]]]]]) –

    要绑定到容器内的端口。

    字典的键是要绑定到容器内的端口,可以是整数或格式为 port/protocol 的字符串,其中 protocol 为 tcp、udp 或 sctp 之一。

    字典的值是要在主机上打开的对应端口,可以是

    • 端口号,作为整数。

      例如:{‘2222/tcp’: 3333} 将容器内的端口 2222 公开为主机上的端口 3333。

    • None,分配随机主机端口。

      例如:{‘2222/tcp’: None}。

    • 如果要指定主机接口,则为 (address, port) 元组。

      例如:{‘1111/tcp’: (‘127.0.0.1’, 1111)}。

    • 如果要将多个主机端口绑定到单个容器端口,则为整数或 (address, port) 元组列表。

      例如:{‘1111/tcp’: [1234, (“127.0.0.1”, 4567)]}。

      例如:{‘9090’: 7878, ‘10932/tcp’: ‘8781’,

      ”8989/tcp”: (“127.0.0.1”, 9091)}

    • 除了随机主机端口之外,上述选项的字典。

      字典包含额外的选项“range”,

      允许绑定端口范围。

      例如

      • {‘2222/tcp’: {“port”: 3333, “range”: 4}}

      • {‘1111/tcp’: {“port”: (‘127.0.0.1’, 1111), “range”: 4}}

      • {‘1111/tcp’: [

        {“port”: 1234, “range”: 4},

        {“ip”: “127.0.0.1”, “port”: 4567}

        ]

      }

  • privileged (bool) – 为此容器提供扩展权限。

  • publish_all_ports (bool) – 将所有端口发布到主机。

  • read_only (bool) – 将容器的根文件系统挂载为只读。

  • read_write_tmpfs (bool) – 在将read_only选项设置为True的情况下,将临时文件系统挂载为读写。默认值:False

  • remove (bool) – 在容器运行结束后将其删除。默认值:False。

  • restart_policy (Dict[str, Union[str, int]]) –

    容器退出时重新启动。配置为一个字典,其键为

    • Name: on-failure或always之一。

    • MaximumRetryCount: 容器在失败时重新启动的次数。

    例如:{“Name”: “on-failure”, “MaximumRetryCount”: 5}

  • runtime (str) – 用于此容器的运行时。

  • secrets (List[Union[str, Secret, Dict[str, Union[str, int]]]]) –

    要挂载到此容器的机密。

    例如

    • 作为字符串列表,每个字符串代表一个机密的ID或名称

      [‘my_secret’, ‘my_secret2’]

    • 作为Secret对象的列表,相应的ID从中读取

      [Secret, Secret]

    • 作为字典列表

      [

      {

      “source”: “my_secret”, # 代表机密ID或名称的字符串

      # 机密

      ”target”: “/my_secret”, # 将源挂载到的可选目标,

      # 回退到/run/secrets/source

      ”uid”: 1000, # 可选的UID,如果未给出则回退到0

      #

      ”gid”: 1000, # 可选的GID,如果未给出则回退到0

      #

      ”mode”: 0o400, # 要应用于目标的可选模式,

      # 对八进制整数使用0o前缀

      },

      ]

  • secret_env (Dict[str, str]) –

    要添加为容器中可用的环境变量的机密。

    例如:{“VARIABLE1”: “NameOfSecret”, “VARIABLE2”: “NameOfAnotherSecret”}

  • security_opt (List[str]) – 用于自定义MLS系统(如SELinux)标签的字符串值列表。

  • shm_size (Union[str, int]) – /dev/shm的大小(例如1G)。

  • stdin_open (bool) – 即使未附加也保持STDIN打开。

  • stdout (bool) – 当detach=False时返回STDOUT的日志。默认值:True。

  • stderr (bool) – 当detach=False时返回STDERR的日志。默认值:False。

  • stop_signal (str) – 用于停止容器的停止信号(例如SIGINT)。

  • storage_opt (Dict[str, str]) – 每个容器的存储驱动程序选项,作为键值映射。

  • stream (bool) – 如果为true且detach为false,则返回日志生成器而不是字符串。如果detach为true,则忽略。默认值:False。

  • sysctls (Dict[str, str]) – 要在容器中设置的内核参数。

  • tmpfs (Dict[str, str]) –

    要挂载的临时文件系统,作为将容器内路径映射到该路径选项的字典。

    例如:{‘/mnt/vol2’: ‘’, ‘/mnt/vol1’: ‘size=3G,uid=1000’}

  • tty (bool) – 分配伪终端。

  • ulimits (List[Ulimit]) – 要在容器内设置的ulimits。

  • use_config_proxy (bool) – 如果为True,并且如果Docker客户端配置文件(默认情况下为~/.config/containers/config.json)包含代理配置,则相应的环境变量将设置在正在构建的容器中。

  • user (Union[str, int]) – 要在容器内以其运行命令的用户名称或UID。

  • userns_mode (str) – 在启用用户命名空间重新映射选项时设置容器的用户命名空间模式。支持的值记录此处

  • uts_mode (str) – 设置容器的UTS命名空间模式。这些是支持的值。

  • version (str) – 要使用的API版本。设置为auto以自动检测服务器的版本。默认值:3.0.0

  • volume_driver (str) – 卷驱动程序/插件的名称。

  • volumes (Dict[str, Dict[str, Union[str, list]]]) –

    用于配置挂载到容器内的卷的字典。键是主机路径或卷名称,值是包含以下键的字典

    • bind: 在容器内挂载卷的路径

    • mode: rw以读写方式挂载卷,或ro以只读方式挂载。

      保留用于与docker-py兼容

    • extended_mode: 传递给卷挂载的选项列表。

    例如

    {

    ‘test_bind_1’

    {‘bind’: ‘/mnt/vol1’, ‘mode’: ‘rw’},

    ’test_bind_2’

    {‘bind’: ‘/mnt/vol2’, ‘extended_mode’: [‘ro’, ‘noexec’]},

    ’test_bind_3’

    {‘bind’: ‘/mnt/vol3’, ‘extended_mode’: [‘noexec’], ‘mode’: ‘rw’}

    }

  • volumes_from (List[str]) – 要从中获取卷的容器名称或ID列表。

  • working_dir (str) – 工作目录的路径。

  • workdir (str) – working_dir的别名 - 工作目录的路径。

返回:

一个Container对象。

引发:
  • ImageNotFound – 当Podman服务找不到镜像时

  • APIError – 当Podman服务报告错误时

exists(key: str) bool[source]

如果资源存在,则返回True。

仅限Podman。

注释

此方法_不_提供任何互斥机制。

get(key: str) Container[source]

按名称或ID获取容器。

参数:

container_id – 容器名称或ID。

返回:

对应于keyContainer对象。

引发:
  • NotFound – 当容器不存在时

  • APIError – 当服务返回错误时

list(**kwargs) List[Container][source]

报告容器。

关键字参数:
  • all – 如果为False,则仅显示正在运行的容器。默认值:False。

  • since – 显示在给定容器名称或ID之后创建的容器。

  • before – 显示在给定容器名称或ID之前创建的容器。

  • limit – 显示最后N个创建的容器。

  • filters

    过滤报告的容器。可用的过滤器

    • exited (int): 仅具有指定退出代码的容器

    • status (str): restarting、running、paused、exited之一

    • label (Union[str, List[str]]): 格式为“key”、“key=value”或此类列表之一。

    • id (str): 容器的ID。

    • name (str): 容器的名称。

    • ancestor (str): 按容器祖先过滤。格式为

      <image-name>[:tag]、<image-id>或<image@digest>。

    • before (str): 仅在特定容器之前创建的容器。

      给出容器名称或ID。

    • since (str): 仅在特定容器之后创建的容器。

      给出容器名称或ID。

  • sparse – 被忽略

  • ignore_removed – 如果为True,则忽略由于缺少容器而导致的故障。

引发:

APIError – 当服务返回错误时

prepare_model(attrs: PodmanResource | Mapping[str, Any]) PodmanResourceType

根据一组属性创建模型。

prune(filters: Mapping[str, str] = None) Dict[str, Any][source]

删除停止的容器。

参数:

filters – 用于确定要删除的容器的条件。可用的键为: - until (str): 删除此时间之前的容器 - label (List[str]): 与容器关联的标签

返回:

  • ContainersDeleted (List[str]): 已删除容器的标识符。

  • SpaceReclaimed (int): 以字节为单位回收的磁盘空间量。

返回类型:

引发:

APIError – 当服务报告错误时

删除(容器 ID: Container | str, **kwargs)[源代码]

删除容器。

仅限 Podman

参数:

容器 ID – 要删除的容器的标识符。

关键字参数:
  • v (bool) – 也删除关联的卷。

  • link (bool) – 忽略。

  • force (bool) – 在删除之前杀死正在运行的容器。

运行(镜像: str | Image, 命令: str | List[str] | None = None, 标准输出=True, 标准错误=False, 删除: bool = False, **kwargs) Container | Generator[str, None, None] | Iterator[str]

运行容器。

默认情况下,run() 将等待容器完成并返回其日志。

如果 detach=True,则 run() 将启动容器并返回 Container 对象而不是

日志。

参数:
  • image – 要运行的镜像。

  • command – 在容器中运行的命令。

  • 标准输出 – 包括标准输出。默认值:True。

  • 标准错误 – 包括标准错误。默认值:False。

  • 删除 – 容器的进程退出时删除容器。默认值:False。

关键字参数:

参数。 (- 请参阅 create() 方法的关键字) –

返回:

  • 当 detach 为 True 时,返回一个 Container

  • 如果 stdout 为 True,则在输出中包含来自容器的标准输出

  • 如果 stderr 为 True,则在输出中包含来自容器的标准错误

  • 当 stream 为 True 时,来自容器的输出将作为生成器返回

  • 否则,在容器完成之后返回一个迭代器

引发:
  • ContainerError – 当容器以非零代码退出时

  • ImageNotFound – 当Podman服务找不到镜像时

  • APIError – 当Podman服务报告错误时

属性 资源

prepare_model() 将创建 Container 类。

类型:

Type[Container]