在测试服务器上构建镜像时无法联网

在本地可以顺利构建镜像,在测试服务器上却报错了。截图如下:


image.png

在图中可以发现,在Dockerfile执行到pip安装下载依赖时就会卡住。
并不是Dockerfile的编译错误,而是什么“Temporary failure in name resolution”错误。

1.假设服务器网络问题

为了不影响服务器现有环境,我新建一个虚拟环境,执行pip相关依赖的下载。


image.png

发现测试服务器网络是通的。没有问题。

2.由于我使用了pip阿里云镜像源,假设无法解析阿里云镜像源域名。
image.png

经过测试发现,不仅网络是通的,而且延迟相当低。

3.容器内部网络问题

在不断缩小范围后,开始排查容器的网络问题。
经过一番查询,得到如下结果:
docker build镜像时,默认使用网桥(bridge)模式,容器时虚拟环境,没有自己的网卡,所以无法连接网络。
好在docker在构建(build)或者运行(run)镜像时都提供了选择网络的参数,我们可以使用宿主机的网络,也就是这台测试服务器。
经过查询docker的官方文档,找了docker build时设置网络的参数--network


image.png
解决问题

在构建镜像时,在命令最后带上--network host即可。

docker build -t <镜像名> . --network host 
image.png

到此为止,解决问题。

参考资料:
docker build以及docker run时使用host网络的方法
docker 官方文档

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Docker — 云时代的程序分发方式 要说最近一年云计算业界有什么大事件?Google Compute Engi...
    ahohoho阅读 15,753评论 15 147
  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 13,602评论 0 120
  • 让博客Docker化,轻松上手Docker Docker是一个有趣的技术,在过去的两年已经从一个想法变成了全世界的...
    喵喵唔的老巢阅读 2,828评论 0 0
  • 五、Docker 端口映射 无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了...
    R_X阅读 5,854评论 0 7
  • 那些年,关于我们的诗。 序章.白 顽强的小草 我,是一棵小草 无数人践踏过我的身体 但,我不怕 因为,那只是伤了我...
    飞叶_阅读 1,270评论 0 1

友情链接更多精彩内容