无法通过 docker-sdk golang 连接到 Docker 守护程序

Cannot connect to the Docker daemon via docker-sdk golang

Docker是运行,ContainerExecCreate创建容器,但是ContainerExecAttachreturns:无法连接到Docker unix 守护进程:///var/run/docker.sock 响应。 docker 守护程序是 运行?

可能是什么问题。

import (
    "archive/tar"
    "bytes"
    "context"
    "fmt"
    "io"
    "io/ioutil"
    "log"
    "net"
    "os"
    "strconv"
    "strings"
    "time"

    client "docker.io/go-docker"
    "docker.io/go-docker/api/types"
    "docker.io/go-docker/api/types/container"
    "docker.io/go-docker/api/types/network"
    "docker.io/go-docker/api/types/swarm"
    "docker.io/go-docker/api/types/volume"
    "github.com/containerd/containerd/reference"
    "github.com/play-with-docker/play-with-docker/config"
)

func (d *docker) ExecAttach(instanceName string, command []string, out io.Writer) (int, error) {
    e, err := d.c.ContainerExecCreate(context.Background(), instanceName, types.ExecConfig{Cmd: command, AttachStdout: true, AttachStderr: true, Tty: true})
    if err != nil {
        return 0, err
    }
    resp, err := d.c.ContainerExecAttach(context.Background(), e.ID, types.ExecConfig{AttachStdout: true, AttachStderr: true, Tty: true})
    if err != nil {
        return 0, err
    }
}

看起来很正常。可能取决于调用时 docker 的状态。可以通过 Ping 或等待一秒钟来检查 docker。