Есть ли способ закрепить версию API докера с помощью клиента golang?(если не использовать dep для продажи )
приведенный ниже код завершается ошибкой с
client version 1.38 is too new. Maximum supported API version is 1.37
Этот код работал до недавнего времени
go version go1.9.5 linux/amd64
здесь: docker version
Client:
Version: 18.05.0-ce
API version: 1.37
Go version: go1.9.5
Git commit: f150324
Built: Wed May 9 22:16:25 2018
OS/Arch: linux/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.05.0-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.5
Git commit: f150324
Built: Wed May 9 22:14:32 2018
OS/Arch: linux/amd64
Experimental: false
это вызывает несоответствие версии API
package main
// kill off some containers
import (
"fmt"
"github.com/docker/docker/api/types"
"github.com/docker/docker/client"
"golang.org/x/net/context"
"strings"
)
func main() {
ctx := context.Background()
cli, err := client.NewEnvClient()
if err != nil {
panic(err) // <--- crashes here due to API mismatch
}
containers, err := cli.ContainerList(ctx, types.ContainerListOptions{})
if err != nil {
panic(err)
}
for _, container := range containers {
if strings.Contains(container.Image, "enduser") || strings.Contains(container.Image, "admin") {
fmt.Println("\n we found enduser or admin so lets stop it\n")
fmt.Print("Stopping container ", container.ID[:10], "... ")
if err := cli.ContainerStop(ctx, container.ID, nil); err != nil {
panic(err)
}
fmt.Println("Success")
}
}
}
На английском языке вышеупомянутая ошибка, потому что версия клиента по умолчанию клиентской библиотеки github repo новее, чемверсия, поддерживаемая Docker ... так что для ответа на комментарий - решение состоит в том, чтобы запросить более низкую версию библиотеки репозитория для соответствия Docker, а не запрашивать более высокую версию