Golang Docker SDK: 解决'Cannot connect to the Docker daemon'错误

在使用Golang Docker SDK的client.WithHTTPClient(httpClient)来自定义HTTP客户端时,您可能会遇到'Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?'错误。 这通常是由于http.Client配置不正确导致的,无法与Docker守护进程建立连接。

问题原因

默认情况下,Docker守护进程使用Unix套接字unix:///var/run/docker.sock进行通信。 如果您的http.Client没有明确配置为使用此套接字,则连接尝试将失败。

解决方案

要解决此问题,您需要配置http.Client以使用正确的套接字路径和超时设置:goimport ( 'context' 'net' 'net/http' 'time'

'github.com/docker/docker/client')

func main() { // 创建自定义 http.Client httpClient := &http.Client{ Timeout: time.Second * 10, // 设置超时时间 Transport: &http.Transport{ DialContext: func(_ context.Context, _, _ string) (net.Conn, error) { return net.DialTimeout('unix', '/var/run/docker.sock', time.Second*10) // 设置连接超时时间和套接字路径 }, }, }

// 使用自定义 http.Client 创建 Docker client	clientOptions := []client.Opt{		client.WithHTTPClient(httpClient),	}	cli, err := client.NewClientWithOpts(clientOptions...)	if err != nil {		panic(err)	}

// 现在您可以使用 Docker client 进行操作	// ..
Golang Docker SDK: 解决'Cannot connect to the Docker daemon'错误

原文地址: https://www.cveoy.top/t/topic/fGZ3 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录