在使用NewEnvClient()创建Docker客户端时,需要知道Docker Daemon API的版本,并设置DOCKER_API_VERSION的环境变量,否则会出现以下错误:
Error response from daemon: client version 1.36 is too new. Maximum supported API version is 1.35发布于 2018-02-06 16:05:45
如果您在同一docker主机中执行代码,则可以使用以下方法来获取API版本。它执行docker version命令并从输出中获取应用编程接口版本。
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)
}
}https://stackoverflow.com/questions/48637624
复制相似问题