【问题标题】:Get package timeout with Docker - "golang.org/x/net/context/ctxhttp"使用 Docker 获取包超时 - “golang.org/x/net/context/ctxhttp”
【发布时间】:2016-11-18 16:22:41
【问题描述】:

我尝试使用 go Docker image 导入此 package

从包的文档中,运行的命令是:

 go get gopkg.in/olivere/elastic.v3

工作,很公平。

我需要对 docker 镜像做同样的事情:

docker run -v $PWD:/temp -w /temp -e GOPATH=$PWD -e GOBIN=$PWD/bin golang:latest go get gopkg.in/olivere/elastic.v3

但我收到以下错误:

package golang.org/x/net/context: 无法识别的导入路径 “golang.org/x/net/context”(https 获取:获取 https://golang.org/x/net/context?go-get=1:拨tcp:查找golang.org 在 192.168.65.1:53: 读取 udp 172.17.0.2:46904->192.168.65.1:53: i/o 超时)

包 golang.org/x/net/context/ctxhttp: 无法识别的导入 路径“golang.org/x/net/context/ctxhttp”(https 获取:获取 https://golang.org/x/net/context/ctxhttp?go-get=1: 拨号 tcp: 查找 192.168.65.1:53 上的 golang.org:读取 udp 172.17.0.2:44687->192.168.65.1:53: i/o 超时)

这是为什么呢?

【问题讨论】:

  • 好像连接不上golang.org,可以试试运行curl https://golang.org吗?
  • 我可以。容器内部和外部。
  • DNS 似乎无法在 192.168.65.1:53 上运行。
  • @Carpetsmoker。有时确实如此。我认为这是 GO 内部代码的错误。
  • 你需要 golang 1.7 才能获得net/context

标签: go docker


【解决方案1】:

对于那些将要研究这个问题的人,我设法找到了解决方案。 我的GOPATHGOBIN 设置错误。我应该使用 docker 容器 inside 的 go 目录。 然后命令变为:

docker run --rm -v $PWD:/t -w/t -e GOPATH=/t -e GOBIN=/t/bin golang:latest go get -v gopkg.in/olivere/elastic.v3

由于某些原因,它解决了 DNS 问题。我仍然不明白为什么,但如果我偶然发现一个解释,我会在这里更新。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-16
    • 2016-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多