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 查询一下有没有这个路径。
python3 podman库的更多相关文章
- 【转】python3解析库lxml
转自:http://www.cnblogs.com/zhangxinqi/p/9210211.html 阅读目录 1.python库lxml的安装 2.XPath常用规则 (1)读取文本解析节点 (2 ...
- python3+requests库框架设计01-自动化测试框架需要什么?
什么是自动化测试框架 关于自动化测试框架的定义有很多,在我大致理解下就是把能实现不同功能的软件组合在一起,实现特定的目的,这就是一个简单的自动化测试框架. 接口自动化测试框架核心无非是选择 一个用来编 ...
- python3解析库pyquery
pyquery是一个类似jquery的python库,它实现能够在xml文档中进行jQuery查询,pyquery使用lxml解析器进行快速在xml和html文档上操作,它提供了和jQuery类似的语 ...
- 8.Python3标准库--数据持久存储与交换
''' 持久存储数据以便长期使用包括两个方面:在对象的内存中表示和存储格式之间来回转换数据,以及处理转换后数据的存储区. 标准库包含很多模块可以处理不同情况下的这两个方面 有两个模块可以将对象转换为一 ...
- 7.Python3标准库--文件系统
''' Python的标准库中包含大量工具,可以处理文件系统中的文件,构造和解析文件名,还可以检查文件内容. 处理文件的第一步是要确定处理的文件的名字.Python将文件名表示为简单的字符串,另外还提 ...
- 1.Python3标准库--前戏
Python有一个很大的优势便是在于其拥有丰富的第三方库,可以解决很多很多问题.其实Python的标准库也是非常丰富的,今后我将介绍一下Python的标准库. 这个教程使用的书籍就叫做<Pyth ...
- Python3 标准库
Python3标准库 更详尽:http://blog.csdn.net/jurbo/article/details/52334345 文本 string:通用字符串操作 re:正则表达式操作 diff ...
- python023 Python3 标准库概览
Python3 标准库概览 操作系统接口 os模块提供了不少与操作系统相关联的函数. >>> import os >>> os.getcwd() # 返回当前的工作 ...
- 比较两个文件的异同Python3 标准库difflib 实现
比较两个文件的异同Python3 标准库difflib 实现 对于要比较两个文件特别是配置文件的差异,这种需求很常见,如果用眼睛看,真是眼睛疼. 可以使用linux命令行工具diff a_file b ...
- python3标准库总结
Python3标准库 操作系统接口 os模块提供了不少与操作系统相关联的函数. ? 1 2 3 4 5 6 >>> import os >>> os.getcwd( ...
随机推荐
- nim 5. 读写文件
读文件 假设nim程序相同的文件夹下,有个people.txt文件,内容如下: Alice A. Bob B. Carol C. 读取这个文件的代码 import strutils let conte ...
- openssl 生成多域名 多IP 的数字证书
openssl.cnf 文件内容: [req] default_bits = 2048 distinguished_name = req_distinguished_name copy_extensi ...
- RocketMQ事务消息源码解析
RocketMQ提供了事务消息的功能,采用2PC(两阶段协议)+补偿机制(事务回查)的分布式事务功能,通过这种方式能达到分布式事务的最终一致. 一. 概述 半事务消息:指的是发送至broker但是还没 ...
- C# 在Excel中添加、应用或删除筛选器 (日期筛选、文本筛选、数字筛选)
自动筛选器是 Excel 中的一个基本但极其有用的功能,它可以让你根据特定的条件来自动隐藏和显示你的数据.当有大量的数据需要处理时,这个功能可以帮你快速找到你需要的信息,从未更加有效地分析和处理相关数 ...
- 将任意程序安装成windows服务
某些时候,一个程序控制台服务程序需要在系统启动的时候自动运行,这时候我们会想到采用windows服务的方式来实现 但是,如果程序本来不支持安装成服务的话,我就需要采用其他方案来实现 之前博主也遇到了类 ...
- 从零开始写 Docker(十六)---容器网络实现(上):为容器插上”网线”
本文为从零开始写 Docker 系列第十六篇,利用 linux 下的 Veth.Bridge.iptables 等等相关技术,构建容器网络模型,为容器插上"网线". 完整代码见:h ...
- docker安装Kafka(windows版)
windows环境安装docker参考安装docker桌面版(Windows) 这一步如果出现报错的话可以直接输入wsl -l -v命令来查看当前Ubuntu的wsl版本 安装Kafka需要先安装 z ...
- Qt-qrencode开发-生成、显示二维码📀
Qt-qrencode开发-生成二维码 目录 Qt-qrencode开发-生成二维码 1.概述 2.实现效果 3.编译qrencode 4.在QT中引入编译为静态库的QRencode 5.在Qt中直接 ...
- else if
// if(){}else if(){}...else{} // 多种条件,多种情况下的判断语句 // 必须要注意 // 1,else if 之后有 ...
- kettle从入门到精通 第三十四课 kettle 错误处理
1.我们在平常写应用程序的时候,需要主动捕获异常或者错误,不然程序有可能异常退出.同样kettle 也支持异常或者错误处理,下图展示的是在批量插入数据的时候捕获异常,如唯一健冲突,死锁等,并将错误信息 ...