【问题标题】:Cannot connect to the Docker daemon via docker-sdk golang无法通过 docker-sdk golang 连接到 Docker 守护进程
【发布时间】:2021-08-19 18:43:40
【问题描述】:

Docker 正在运行,ContainerExecCreate 创建了一个容器,但ContainerExecAttach 返回:无法连接到 unix 上的 Docker 守护进程://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 命令吗?您是在主机上还是在容器中运行此程序? (您是否需要以编程方式运行docker exec?)
  • 是的,仅以编程方式。 Dockerd 工作正常,我一直使用 docker sdk for python,一切正常。

标签: docker go docker-stack docker-api


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 2020-06-03
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 2016-02-07
    相关资源
    最近更新 更多