成功最有效的方法就是向有经验的人学习!

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

在本地可以顺利构建镜像,在测试服务器上却报错了。截图如下
表现的形式主要是安装一些网络包无法进行,例如apk add xxx

file

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

1.假设服务器网络问题
为了不影响服务器现有环境,我新建一个虚拟环境,执行pip相关依赖的下载。

file

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

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

file

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

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

file

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

docker build -t <镜像名> . --network host
赞(0) 打赏
未经允许不得转载:陈桂林博客 » 测试服务器上构建镜像时无法联网
分享到

大佬们的评论 抢沙发

全新“一站式”建站,高质量、高售后的一条龙服务

微信 抖音 支付宝 百度 头条 快手全平台打通信息流

橙子建站.极速智能建站8折购买虚拟主机

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏

登录

找回密码

注册