docker - 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
)
解决方案
我记得 1.5-2 个月前我和你有类似的问题。
我的观察:
- 有很多版本的 docker API
- 很难分辨“官方”文档中描述的是哪个版本
- API 本身有缺陷
- 源代码 - 很容易理解
我没有找到“实际描述官方文档的内容?”的答案。或“实际上在哪里 docker API repo?”
我放弃了以“官方方式”解决的尝试,发现使用“非官方”更实用
“非官方方式”:
- 使用docker/docker-ce (请注意,官方文档中的示例未经修改将无法使用)
- 而不是官方文档 - 只需在
docker-ce
repo 中搜索代码。 docker/client
我在这里找到的最佳使用示例: components/engine/integration/internal/container/exec.go(请注意,它位于其中internal
并且不可能用作包)- 我将我需要的代码抓取到我的包中并解决了我遇到的问题
也许这是“不正确”的解决方案,但它对我有用。
我想你也不依赖 docker 文档可能更实用。
祝你好运!
推荐阅读
- azure - 通过 Ansible 创建 VM 并将应用程序部署到 Azure VM
- angularjs - 如何避免在页面加载时显示 AngularJS 指令代码
- wildcard - 删除以字母 S 开头的 4 个字符长的 dos 文件夹
- css - 如何使用 Greensock 缩放和旋转图像?
- kdb - kdb q 根据另一张表中的数据查询一张表中的数据,无需连接
- javascript - Angular 6:使用 ID 将数据添加到数据库
- c++ - 如何检查二维char数组是否有空字
- cuda - 为什么 cufftPlanMany() 会导致分段错误?
- mongodb - 保证跨微服务访问MongoDB中分片集群的数据一致性
- javascript - Req.body 返回错误类型的对象