Golang Docker SDK: 解决'Cannot connect to the Docker daemon'错误
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 进行操作 // ..
原文地址: https://www.cveoy.top/t/topic/fGZ3 著作权归作者所有。请勿转载和采集!