0

我的实际问题是,如何获得特定版本的 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 中不可用。

4

1 回答 1

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{})

而已。

于 2018-10-03T03:59:27.610 回答