代码

package docker

import (
	"context"
	"fmt"
	"github.com/docker/docker/api/types"
	"github.com/docker/docker/client"
	"io"
	"log"
)

func Conn() io.Reader {
	//创建连接
	client, err := client.NewClientWithOpts(client.WithHost("unix:///var/run/docker.sock"))
	if err != nil {
		log.Println(err)
	}
	fmt.Println("err1: ", err)
	//使用连接获取容器日志,返回一个io.Reader
	logs, err := client.ContainerLogs(context.TODO(), "charming_knuth", types.ContainerLogsOptions{
		ShowStdout: true,
		ShowStderr: true,
		Follow:     true,
	})
	fmt.Println("err: ", err)
	return logs
}

报错

err: Error response from daemon: client version 1.42 is too new. Maximum supported API version is 1.41

client版本太高了,指定下client版本就行

解决

client.WithVersion(“xxx”) 指定版本

package docker

import (
	"context"
	"fmt"
	"github.com/docker/docker/api/types"
	"github.com/docker/docker/client"
	"io"
	"log"
)

func Conn() io.Reader {
	//创建连接
	client, err := client.NewClientWithOpts(client.WithHost("unix:///var/run/docker.sock"), client.WithVersion("1.41"))
	if err != nil {
		log.Println(err)
	}
	fmt.Println("err1: ", err)
	//使用连接获取容器日志,返回一个io.Reader
	logs, err := client.ContainerLogs(context.TODO(), "charming_knuth", types.ContainerLogsOptions{
		ShowStdout: true,
		ShowStderr: true,
		Follow:     true,
	})
	fmt.Println("err: ", err)
	return logs
}