如何通过Golang的SDK获取docker api版本?

I need to know Docker Daemon API version and setup the environment variable of DOCKER_API_VERSION when I have to create Docker client with NewEnvClient(), if not I will get an error about:

Error response from daemon: client version 1.36 is too new. Maximum supported API version is 1.35

If you are executing your code in the same docker host you can use the following approach to get the API version. It execute docker version command and get the API version from that output.

package main

import (
    "os/exec"
    "bytes"
    "os"
    "github.com/docker/docker/client"
    "golang.org/x/net/context"
    "github.com/docker/docker/api/types"
    "strings"
)

func main() {
    cmd := exec.Command("docker", "version", "--format", "{{.Server.APIVersion}}")
    cmdOutput := &bytes.Buffer{}
    cmd.Stdout = cmdOutput

    err := cmd.Run()
    if err != nil {
        panic(err)
    }
    apiVersion := strings.TrimSpace(string(cmdOutput.Bytes()))
    // TODO: (optional) verify the api version is in the correct format(a.b)
    os.Setenv("DOCKER_API_VERSION", apiVersion)
    // execute docker commands
    ctx := context.Background()
    cli, err := client.NewEnvClient()
    if err != nil {
        panic(err)
    }
    _, err = cli.ImagePull(ctx, "alpine", types.ImagePullOptions{})
    if err != nil {
        panic(err)
    }
}