python3 podman库

前言


最近在使用 podman, 需要调用一些 podman的接口,podman官网提供的接口并不是很详尽,使用 unix.sock 的方式调用有一

些困难。后来测试 ai 工具时,其提供了一个比较好用的库:podman, 适用了一下,感觉还不错,在此记录一下。

正文


安装 podman 库

pip install podman

简单的控制脚本
podman_ctl.py

# -*- coding:utf-8 -*-
from podman import PodmanClient

class PodmanCtl(object):
    """
    podman控制类
    """
    
    def __init__(self, base_url:str=None) -> None:
        # 创建 Podman 客户端实例
        if base_url is not None:
            self.base_url = base_url
        else:
            self.base_url = 'unix:///run/user/0/podman/podman.sock'
        self.client = PodmanClient(base_url= self.base_url)
    
    def get_all_containers(self):
        """
        获取所有的容器信息
        """
        container_list = self.client.containers.list()
        for container in container_list:
            print(vars(container))
    
    def get_all_images(self):
        """
        获取所有的镜像信息
        """
        image_list = self.client.images.list()
        for image in image_list:
            print(vars(image))
    
    def search_image_by_name(self, name:str):
        """
        根据名称搜索镜像
        """
        result_list = self.client.images.search(name)
        for result in result_list:
            print(result)
    
    def get_container_status(self, container_name:str):
        is_exists = self.client.containers.exists(container_name)
        if is_exists:
            container = self.client.containers.get(container_name)
            status = container.status
            print(f"container: {container_name} status: {status}")
        else:
            print(f"container: {container_name} not exists")
        return


if __name__ == "__main__":
    # base_url = 'unix:///run/user/0/podman/podman.sock'
    base_url = 'unix:///run/podman/podman.sock'
    podman_ctl = PodmanCtl(base_url=base_url)
    # podman_ctl.get_all_containers()
    # podman_ctl.get_all_images()
    # podman_ctl.search_image_by_name("ubuntu")
    podman_ctl.get_container_status("openresty")

注意,unix:///run/podman/podman.sock 是一个通用的 podman.sock, 如果想要某个用户的 podman.sock,

需要使用用户登录后,执行 id 指令查询用户id, 然后找到对应的如 unix:///run/user/0/podman/podman.sock,

user 后的 0 就是用户的id, 最好 ls /run/user/0/podman/podman.sock 查询一下有没有这个路径。

posted @   BrianSun  阅读(73)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
点击右上角即可分享
微信分享提示