如何将libpod用于自定义/衍生项目

libpod 如今是一个 Golang 库和一个命令行界面。你选择的接口各有优劣。

libpod 如今是一个 Golang 库和一个命令行界面。你选择的接口各有优劣。

使用 REST API

优势:

  • 稳定的、有版本控制的API

  • 与语言无关

  • API 文档完善

缺点:

  • 错误处理不如 Golang API 详细

  • 可能会更慢

作为子进程运行

优势:

  • 许多命令输出 JSON 格式数据

  • 适用于 Golang 以外的语言

  • 易于上手

缺点:

  • 错误处理更困难

  • 可能会更慢

  • 无法接入或控制底层事务,比如镜像的拉取方式

引入到 Go 项目中

优势:

  • 强大的力量与控制力

缺点:

  • 您现在需要负责容器运行时安全更新(部分负责,runc/crun 是独立的)

  • 二进制文件大小

  • 多个 libpod 版本在同一存储上运行时可能存在的偏移差异会引发问题

做出选择

首先需要明确的是:是否希望用户能使用 podman 操作项目创建的容器?

若需如此,则更倾向于将 podman 作为子进程运行或通过 HTTP API 调用。

若追求独立镜像仓库和截然不同的操作体验;若容器使用场景与 podman 命令行创建的容器存在显著差异,则可能需要考虑采用 vendoring(引入) 方案。

  

天下之事常成于困约,而败于奢靡。——陆游
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
其他应用
公众号