前言


最近在使用 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 查询一下有没有这个路径。

python3 podman库的更多相关文章

  1. 【转】python3解析库lxml

    转自:http://www.cnblogs.com/zhangxinqi/p/9210211.html 阅读目录 1.python库lxml的安装 2.XPath常用规则 (1)读取文本解析节点 (2 ...

  2. python3+requests库框架设计01-自动化测试框架需要什么?

    什么是自动化测试框架 关于自动化测试框架的定义有很多,在我大致理解下就是把能实现不同功能的软件组合在一起,实现特定的目的,这就是一个简单的自动化测试框架. 接口自动化测试框架核心无非是选择 一个用来编 ...

  3. python3解析库pyquery

    pyquery是一个类似jquery的python库,它实现能够在xml文档中进行jQuery查询,pyquery使用lxml解析器进行快速在xml和html文档上操作,它提供了和jQuery类似的语 ...

  4. 8.Python3标准库--数据持久存储与交换

    ''' 持久存储数据以便长期使用包括两个方面:在对象的内存中表示和存储格式之间来回转换数据,以及处理转换后数据的存储区. 标准库包含很多模块可以处理不同情况下的这两个方面 有两个模块可以将对象转换为一 ...

  5. 7.Python3标准库--文件系统

    ''' Python的标准库中包含大量工具,可以处理文件系统中的文件,构造和解析文件名,还可以检查文件内容. 处理文件的第一步是要确定处理的文件的名字.Python将文件名表示为简单的字符串,另外还提 ...

  6. 1.Python3标准库--前戏

    Python有一个很大的优势便是在于其拥有丰富的第三方库,可以解决很多很多问题.其实Python的标准库也是非常丰富的,今后我将介绍一下Python的标准库. 这个教程使用的书籍就叫做<Pyth ...

  7. Python3 标准库

    Python3标准库 更详尽:http://blog.csdn.net/jurbo/article/details/52334345 文本 string:通用字符串操作 re:正则表达式操作 diff ...

  8. python023 Python3 标准库概览

    Python3 标准库概览 操作系统接口 os模块提供了不少与操作系统相关联的函数. >>> import os >>> os.getcwd() # 返回当前的工作 ...

  9. 比较两个文件的异同Python3 标准库difflib 实现

    比较两个文件的异同Python3 标准库difflib 实现 对于要比较两个文件特别是配置文件的差异,这种需求很常见,如果用眼睛看,真是眼睛疼. 可以使用linux命令行工具diff a_file b ...

  10. python3标准库总结

    Python3标准库 操作系统接口 os模块提供了不少与操作系统相关联的函数. ? 1 2 3 4 5 6 >>> import os >>> os.getcwd( ...

随机推荐

  1. 高性能远程桌面Splashtop 居家办公首选软件

    2020年,新冠疫情期间,各地提倡远程办公.居家办公.在家里怎么使用办公室的电脑?以Splashtop为代表的远程桌面控制软件也就被越来越多的人知晓和使用了. 什么是Splashtop远程桌面? Sp ...

  2. pageoffice在线编辑word文件并禁止选中

    一.整篇文档禁止选中 wordDoc.setDisableWindowSelection(true); //禁止word的选择文字功能 二.根据条件判断是否禁止选中 比如:选中内容超过一定字数,取消选 ...

  3. 守护安全|AIRIOT城市天然气综合管理解决方案

      城市使用天然气存在安全风险和隐患,天然气管理的复杂性也比较高,依靠传统人工难以发现安全漏洞,特别是在燃气场站.管网的安全监管等方面,场站面临作业管理.区域管控等问题,管线存在第三方施工发现问题不及 ...

  4. c++ lambda学习举例

    #include <iostream> #include<vector> #include<algorithm> #include<cmath> #in ...

  5. gitlab docker 自动部署报错 /bin/bash: line 118: docker: command not found

    原因找不到docker,我们需要绑一下docker 列出所有gitlab-runner配置文件 find / | grep config.toml [root@izwz99pke7zxkpm7l51t ...

  6. 多线程池Flask实战应用

    多线程池Flask实战应用 import json import time import flask from concurrent.futures import ThreadPoolExecutor ...

  7. tkinter时钟(实时更新显示)

    from tkinter import * import time root = Tk() root.geometry('300x200') var = StringVar() def show(): ...

  8. Yii 实现数据库SUM操作

    方法一:这种方法有个坑儿,就是as 后面的别名,必须是属性范围内的名字. $criteria = new CDbCriteria(); $criteria->select = 'sum(amou ...

  9. 微信iOS消息拦截插件教程-第一个tweak编译过程

    -安装好theos框架之后,下面用一个简单的例子进行说明编译过程 -新建一个代码目录 -进入terminal,cd到刚才的目录中 1.进入目录 2.执行/opt/theos/bin/nic.pl 3. ...

  10. U-Boot命令使用

    帮助命令 help 所有命令提示: h ? help 某一条命令提示: ? 命令名 help 命令名 信息查询命令 bdinfo 查看板子信息: => bdinfo arch_number = ...