我的实际问题是,如何获取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中没有此功能。
答案 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{})
就是这样。