咨询支持save/load与import/export命令的Java Docker客户端
JVM环境支持export/import、save/load操作的Docker客户端选型
你之前调研的Spotify docker-client、旧版Java Docker API client确实未原生封装这四类操作,目前可直接落地的选型如下:
- docker-java(当前社区活跃维护版本)
这是目前JVM生态维护最久、兼容性最好的Docker客户端,3.2.x及以上稳定版本已经原生实现你需要的全部操作,对应关系和命令行完全对齐:saveImageCmd:对应docker save,支持将指定镜像导出为tar输入流loadImageCmd:对应docker load,支持从本地tar流加载镜像到本地DockerexportContainerCmd:对应docker export,支持将运行中/已停止容器的文件系统导出为tar包importImageCmd:对应docker import,支持将tar包导入为本地镜像
所有接口都支持自定义流处理,不需要把整个tar包缓存到内存,大镜像/大容器导出也不会触发OOM。
- fabric8 Docker客户端模块
原本是fabric8 docker-maven-plugin内置的底层客户端能力,可单独作为依赖引入项目,同样完整覆盖save/load/export/import四类操作,接口参数命名和Docker命令行参数几乎一致,学习成本很低,适合本身已经在用fabric8生态工具的项目。 - 现有客户端轻量改造方案
如果你项目已经深度集成了Spotify等老客户端,不需要全量替换依赖,这四个操作本质是Docker daemon暴露的标准REST接口,直接复用现有客户端的HTTP连接、鉴权逻辑,自己封装对应接口即可,单接口实现代码量通常不超过50行,没有额外的兼容坑。
避坑提醒:不要选用2020年之后就停止维护的Docker客户端封装,这类项目绑定的Docker API版本普遍在1.40以下,不仅缺失你需要的接口,对接Docker 20.10及以上版本时还会出现协议不兼容、鉴权失败等问题。
内容的提问来源于stack exchange,提问作者nvkvc
相关产品推荐
相关产品推荐

