Golang 使用 Docker SDK 中 WithHTTPClient 方法更换 httpClient 后无法连接 Docker 的解决方法

在 Golang 中使用 Docker SDK 的 WithHTTPClient 方法更换 httpClient 后,可能会遇到无法连接 Docker 的问题。这通常是因为你传入的 httpClient 不支持 Docker API 的协议或版本。

解决方案

1. 使用官方推荐的 httpClient:

建议使用官方推荐的 httpClient,例如:

import (
    "github.com/docker/docker/client"
)

cli, err := client.NewClientWithOpts(client.WithVersion("1.39"), client.WithHTTPHeaders(headers))

其中,headers 是一个 map[string]string 类型的变量,用于设置 HTTP 请求头。

2. 确保自定义 httpClient 支持 Docker API 协议和版本:

如果你需要更改 httpClient,可以使用 WithHTTPClient 方法,但需要确保传入的 httpClient 支持 Docker API 的协议和版本。例如:

import (
    "net/http"
    "github.com/docker/docker/client"
)

httpClient := &http.Client{
    Timeout: time.Second * 30,
}

cli, err := client.NewClientWithOpts(client.WithHTTPClient(httpClient), client.WithVersion("1.39"), client.WithHTTPHeaders(headers))

3. 检查 Docker API 版本和协议是否匹配:

如果仍然无法连接,可以检查 Docker API 的版本和协议是否匹配,以及网络连接是否正常。

总结

在使用 WithHTTPClient 方法更换 httpClient 时,务必确保传入的 httpClient 支持 Docker API 的协议和版本,并检查 Docker API 版本、协议和网络连接是否正常。

Golang 使用 Docker SDK 中 WithHTTPClient 方法更换 httpClient 后无法连接 Docker 的解决方法

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

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