Golang 使用 Docker SDK 中 WithHTTPClient 方法更换 httpClient 后无法连接 Docker 的解决方法
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 版本、协议和网络连接是否正常。
原文地址: https://www.cveoy.top/t/topic/j5Hg 著作权归作者所有。请勿转载和采集!