编程技术分享平台

网站首页 > 技术教程 正文

容器技术:Podman 与 RESTful 接口

xnh888 2024-10-16 17:41:12 技术教程 23 ℃ 0 评论

Podman简介

还是先简要介绍一下Podman,Podman 是 RedHat 推出一个开源的容器运行时项目,支持多数 Linux、Windows、Mac平台(Windows和Mac平台以podman machine虚拟化形式运行)。


Podman 在安全上面有较大改进,不需要在系统上运行守护进程,并且也可以在没有 root 权限的情况下运行,兼容性层面可以管理和运行任何符合 OCI(Open Container Initiative)规范的容器和容器镜像。



在操作层面,Podman 提供与 Docker 非常相似的功能,提供了一个几乎与 Docker 完全兼容的命令行,大大减少了我们的学习成本。

常规操作示例:

podman --help
podman exec        在已运行的容器内运行命令  
podman images      列出已有镜像
podman inspect     查看容器的配置信息
podman ps          查看运行的容器  
podman pull        从镜像仓库拉取镜像
podman restart     重启容器
podman rmi         删除镜像
podman run         创建、启动容器
podman stop        停止容器
……

可以看到Podman在操作上和Docker基本无差异,所以这里就不多做介绍了。

今天主要给大家介绍一下Podman的API功能,用命令行和Python调用进行直观展示。

准备开启RESTful API

先准备俩镜像

$ podman images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/library/busybox latest bc01a3326866 2 weeks ago 1.46 MB
docker.io/library/nginx latest 76c69feac34e 2 weeks ago 146 MB

启动容器

$ podman run -dt --name qqls01 busybox 
$ podman run -dt -p 80:80 --name qqls02 nginx
$ podman ps 
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1b16d615fa92 docker.io/library/busybox:latest sh 2 hours ago Up 2 hours ago qqls01
409d404a7ed6 docker.io/library/nginx:latest nginx -g daemon o... 2 hours ago Up 2 hours ago 0.0.0.0:80->80/tcp qqls02

启动Podman API service进程

$ podman system service tcp:0.0.0.0:8080 --time=0 &

命令行调用接口展示:

查看基础信息

curl -s http://192.168.1.1:8080/v2.0.0/libpod/info | jq

查看已有镜像

$ curl -s http://192.168.1.1:8080/v2.0.0/libpod/images/json | jq .[].Names
[
 "docker.io/library/busybox:latest"
]
[
 "docker.io/library/nginx:latest"
]

查看运行的容器

$ curl -s http://192.168.1.1:8080/v2.0.0/libpod/containers/json?all=true | jq .[].Names
[
 "qqls01"
]
[
 "qqls02"
]

Python调用接口展示:

import json
import requests

res = requests.get("http://192.168.1.1:8080/v2.0.0/libpod/containers/json?all=true")
res.raise_for_status()

ctn = json.loads(res.text)
for c in ctn:
    print(c['Names'][-1])
$ python3 test.py 
qqls01
qqls02

总结:

Podman的API接口比较丰富,有兴趣的可以自行查询了解。

当前Redhat/CentOS从8.0开始默认集成Podman,从容器技术发展角度有必要去学习一下。

** 定期发布新技术,欢迎关注评论交流 **

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表