如何使用docker go-lang API的TaskLogs端点?

时间:2018-10-02 19:27:54

标签: docker go docker-api moby

我的实际问题是,如何获取go-lang docker客户端的特定版本?我可以找到的最新版本是v17.03.2-ce,它是一年或更旧的版本。我想使用具有TaskLogs的docker 1.37。但是找不到与此特定版本的版本。如果我选择master分支,它将给我v1.39,但是我安装的docker客户端API是v1.38,它会抛出错误“来自守护程序的错误响应:客户端版本1.39太新。最大支持的API版本是1.38”。 >

为什么我需要v1.37? 我正在使用v1.13.1,效果很好。现在,我需要实现TaskLogs抓取器,而v1.13.1中没有此功能。

1 个答案:

答案 0 :(得分:0)

已解决

这真的很简单:

在Gopkg.toml中添加:

[[constraint]]
  name = "github.com/docker/docker"
  branch = "master"

[[override]]
  name = "github.com/docker/distribution"
  branch = "master"

要使用任何版本,请使用特定版本创建客户端:

import (
    dockerClient "github.com/docker/docker/client"
    dockerTypes "github.com/docker/docker/api/types"
    )
var dockerClientInst *dockerClient.Client
dockerClient.NewClientWithOpts(dockerClient.WithVersion("1.37"))
responseBody, err := dockerClientInst.TaskLogs(ctx, taskID, dockerTypes.ContainerLogsOptions{})

就是这样。