Как использовать конечную точку 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{})
Вот и все.