首页 > 解决方案 > go中的“找不到提供包的模块”

问题描述

我试图通过导入来安装官方的 go docker 客户端

“github.com/docker/docker/client”

但我收到以下错误

无法加载 github.com/docker/distribution/reference:找不到提供包 github.com/docker/distribution/reference 的模块

我的 go 版本是 1.12,我的项目在 $GOPATH/src 之外。我的 go.mod 文件看起来像这样。

module app

go 1.12

require (
  github.com/Microsoft/go-winio v0.4.14 // indirect
  github.com/docker/docker v1.13.1
  github.com/docker/go-connections v0.4.0 // indirect
  github.com/docker/go-units v0.4.0 // indirect
  golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297 // indirect
)

标签: dockergo

解决方案


我记得 1.5-2 个月前我和你有类似的问题。

我的观察

  • 有很多版本的 docker API
  • 很难分辨“官方”文档中描述的是哪个版本
  • API 本身有缺陷
  • 源代码 - 很容易理解

我没有找到“实际描述官方文档的内容?”的答案。或“实际上在哪里 docker API repo?”

我放弃了以“官方方式”解决的尝试,发现使用“非官方”更实用

“非官方方式”

  • 使用docker/docker-ce (请注意,官方文档中的示例未经修改将无法使用)
  • 而不是官方文档 - 只需在docker-cerepo 中搜索代码。
  • docker/client我在这里找到的最佳使用示例: components/engine/integration/internal/container/exec.go(请注意,它位于其中internal并且不可能用作包)
  • 我将我需要的代码抓取到我的包中并解决了我遇到的问题

也许这是“不正确”的解决方案,但它对我有用。

我想你也不依赖 docker 文档可能更实用。

祝你好运!


推荐阅读