docker编译go代码时报dial tcp xxx.xxx.xxx.xxx io timeout错误
·
问题描述
在使用jenkins将go代码打包成二级制rpm包的时候,在运行docker命令:
docker run -v $PWD:/go/src/github.com/xxx quay.io/influxdb/telegraf-ci:1.13.3 bash -c "go env -w GO111MODULE=on && go env -w GOPROXY=https://goproxy.cn,direct && cd /go/src/github.com/xxx && make package-standalone" --net host --env GOPROXY=https://goproxy.cn,direct
控制台总是报失败错误:
failed with error: go: collectd.org@v0.3.0: Get https://goproxy.cn/collectd.org/@v/v0.3.0.mod: dial tcp goproxy.cn: i/o timeout
问题分析
在尝试换了各种代理,修改主机/etc/resolvf.conf,在/etc/hosts中增加goproxy.cn的真实ip地址映射,均不能解决问题。
猜测问题跟docker中访问proxy存在问题。
问题解决
查看docker的配置,发现docker可以指定整个容器的DNS。
最终通过配置docker的DNS,问题得到解决。
- 修改宿主机的 /etc/docker/daemon.json 文件中增加以下内容来设置全部容器的 DNS:
{
“dns” : [
“114.114.114.114”,
“8.8.8.8”
]
}
设置后,启动容器的 DNS 会自动配置为 114.114.114.114 和 8.8.8.8。 - 配置完,需要重启 docker 才能生效。
sudo service docker restart - 然后重新执行docker打包命令,不再出错,问题解决。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)