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

标签 docker go docker-api moby

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

为什么我需要 v1.37? 我使用的是 v1.13.1,运行良好。现在我需要实现 TaskLogs 抓取器,这在 v1.13.1 中不可用。

最佳答案

已解决

这真的很简单:

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

就是这样。

关于docker - 如何使用 docker go-lang API 的 TaskLogs 端点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52615135/

相关文章:

docker - 如何在 kubernetes 中运行的 docker 中模拟 --device 选项

arrays - 已知长度数据的 slice 与数组

go - Go 中的 strconv.Atoi(基本计算器)

go - Envoy WASM 由于缺少导入而无法加载(使用 net/http Go 模块)

Docker API 启动容器返回 404

amazon-web-services - 如何从 AWS ECR Container Registry 中删除未标记的图像

java - 使用 Docker 从命令行构建 Android 项目

docker - 如何通过docker API创建并启动容器

linux - 何时以及何时不在 Docker Remote API 中使用 tty

Docker 流量控制 (tc) - 未找到指定的 qdisc