Как использовать конечную точку TaskLogs API docker go-lang?

Мой актуальный вопрос, как получить конкретную версию Go-Lang Docker клиента? Последняя версия, которую я могу найти, v17.03.2-ce, которая старше года. Я хочу использовать Docker 1.37, который имеет TaskLogs. Но не смог найти один с этой конкретной версией. Если я выберу основную ветку, это даст мне v1.39, но мой установленный клиентский API-интерфейс докера v1.38, который выдает ошибку "Ошибка ответа от демона: клиентская версия 1.39 слишком нова. Максимальная поддерживаемая версия API - 1.38".

Зачем мне нужен v1.37? Я использовал v1.13.1, который работал нормально. Теперь мне нужно реализовать TaskLogs граббер, и это не доступно в v1.13.1.

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

Вот и все.

Другие вопросы по тегам