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

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

作者: 转身丶即天涯 | 来源:发表于2019-01-10 13:56 被阅读7次

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


    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 官方文档

    相关文章

      网友评论

          本文标题:在测试服务器上构建镜像时无法联网

          本文链接:https://www.haomeiwen.com/subject/zfqarqtx.html