statusLoading layerprogressDetailcurrent230592000total230592000progress==================================================u003e 2306MB2306MBid0c074c40f50agolang如何获取其中current和total的数据请用golang写个示例
要获取其中current和total的数据,可以使用Docker SDK for Go来实现。以下是一个示例代码:
package main
import (
"context"
"fmt"
"github.com/docker/docker/api/types"
"github.com/docker/docker/client"
)
func main() {
cli, err := client.NewClientWithOpts(client.FromEnv)
if err != nil {
panic(err)
}
imageName := "your_image_name"
resp, err := cli.ImagePull(context.Background(), imageName, types.ImagePullOptions{})
if err != nil {
panic(err)
}
defer resp.Close()
decoder := json.NewDecoder(resp)
var pullStatus types.JSONMessage
for {
err := decoder.Decode(&pullStatus)
if err != nil {
break
}
if pullStatus.ProgressDetail != nil {
fmt.Printf("Current: %d, Total: %d\n", pullStatus.ProgressDetail.Current, pullStatus.ProgressDetail.Total)
}
}
}
上述代码使用Docker SDK for Go中的ImagePull方法来拉取镜像,并通过ProgressDetail字段获取当前和总的进度数据。在示例代码中,我们使用了json.Decoder来解析Docker返回的JSON消息,并提取所需的进度数据。
请注意,为了运行此示例,您需要在代码中替换your_image_name为您要拉取的镜像名称。
原文地址: https://www.cveoy.top/t/topic/hXbf 著作权归作者所有。请勿转载和采集!