我正在开发一个使用Docker API的Go脚本,用于我的项目。登录到我的仓库后,我拉取所需的Docker镜像,但问题是ImagePull函数返回一个io.ReadCloser实例,我只能通过以下方式将其传递给系统输出:
很酷的是我可以看到响应,但我找不到一个合适的方法来解析它并根据它实现逻辑,如果图像的新版本已经被下载,会做一些事情,而如果图像是最新的,会做其他事情。如果您曾经遇到过这个问题,我会很高兴听取您的经验。
io.Copy(os.Stdout, pullResp)
很酷的是我可以看到响应,但我找不到一个合适的方法来解析它并根据它实现逻辑,如果图像的新版本已经被下载,会做一些事情,而如果图像是最新的,会做其他事情。如果您曾经遇到过这个问题,我会很高兴听取您的经验。
fmt.Print()
打印它,因为我得到了&{0xc4202d42c0 {0 0} false <nil> 0x62f8b0 0x62f840}
,所以唯一的选择是将其传递给stdout,这会给我几行像这样的输出:{"status":"Extracting","progressDetail":{"current":1081344,"total":3160552},"progress":"[=================\u003e ] 1.081 MB/3.161 MB","id":"3c947192b06a"}
。正如我之前所说,它就像一个流,而不是静态数据,可以简单地解析为本机JSON对象。 - Radoslav Stoyanov