PaddlePaddle-docker镜像无法联网下载数据文件

  • 问题描述:win10安装PaddlePaddle的docker镜像之后,运行手写数字识别的模型,无法联网下载数据文件该如何解决?

  • 报错输出:

Cache file /root/.cache/paddle/dataset/mnist/train-labels-idx1-ubyte.gz not found, downloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz
Traceback (most recent call last):
File "train_with_paddle.py", line 117, in <module>
main()
File "train_with_paddle.py", line 87, in main
paddle.reader.shuffle(paddle.dataset.mnist.train(), buf_size=8192),
File "/usr/lib64/python2.7/site-packages/paddle/v2/dataset/mnist.py", line 91, in train
TRAIN_LABEL_MD5), 100)
File "/usr/lib64/python2.7/site-packages/paddle/v2/dataset/common.py", line 85, in download
r = requests.get(url, stream=True)
File "/usr/lib/python2.7/site-packages/requests/api.py", line 71, in get
return request('get', url, params=params, **kwargs)
File "/usr/lib/python2.7/site-packages/requests/api.py", line 57, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 475, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 585, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python2.7/site-packages/requests/adapters.py", line 442, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='yann.lecun.com', port=80): Max retries exceeded with url: /exdb/mnist/train-labels-idx1-ubyte.gz (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7f5d86ae1550>: Failed to establish a new connection: [Errno -2] Name or service not known',))
  • 解决方案1:如果本机无法联网,请从一台能联网的机器上下载数据集,然后拷贝到docker镜像的/root/.cache/paddle/dataset/mnist/ 路径中去。

  • 解决方案2:电脑本身是可以连网,docker镜像里没法连网,请尝试在docker镜像命令行环境尝试wget www.baidu.com,如果输出为下:

root@c47b61dfeb66 /]# wget www.baidu.com
--2018-09-04 11:21:14-- http://www.baidu.com/
Resolving www.baidu.com (www.baidu.com)... failed: Name or service not known.
wget: unable to resolve host address 'www.baidu.com'

则说明docker内的DNS解析有问题,您可以执行一下命令 echo “nameserver 8.8.8.8” >> /etc/resolv.conf && echo “nameserver 8.8.4.4” >> /etc/resolv.conf,修改Docker的DNS,将其改成8.8.4.4

  • 问题分析:
    分析问题的第一步就会回看"现场",即报错的具体输出,通常报错时,会将这个错误栈都输出,方便使用者定位原始报错位置,但报错的关键原因依旧是最后几句,就上面的问题而已,就是requests.exceptions.ConnectionError: HTTPConnectionPool(host='yann.lecun.com', port=80): Max retries exceeded with url: /exdb/mnist/train-labels-idx1-ubyte.gz (Caused by NewConnectionError('<requests.packages.urllib3.connection.HTTPConnection object at 0x7f5d86ae1550>: Failed to establish a new connection: [Errno -2] Name or service not known',)),简单看一下,其实就知道是网络问题了,关键点在于Max retries exceeded with url,即该url超出最大的重试次数了,Failed to establish a new connection,即无法建立新连接,从而可以判断是网络出了问题,那么要解决这个问题其实就要先解决网络问题,因为这个错误是从docker报出的,那么首先就要判断是docker无法连接网络还是本地无法连接网络,再一步步解决

  • 问题拓展:
    如果从报错信息中看到了HTTPConnectionPool、XXXConnectionError之类的字眼,大概率就是网络出了问题,才会导致这类报错。网络报错是有很明显标志的,如无法连接、连接次数过多等,确定了是网络问题后,就好解决了,你只需要确认是什么导致你网络无法连接,这里就有多种原因了,有软件层面的,有硬件层的,简单讨论一下,软件层面通常有两种情况,一种是你使用了全局代理或全局抓包软件,这些软件如果开了全局模式就会将所有的网络请求都重定向到指定的地址,这可能会导致网络断开,另一种可能就是你的host文件有问题,host文件可以理解为本地的DNS,检查一下DNS,看看是否有相应的配置,将请求地址重定向了。硬件层可能性就很多了,网卡设备坏了,路由有问题等等

  • 问题研究:
    docker内的网络问题除了可能是本地网络有问题外,还有可能就是docker镜像无法连接网络,判断是本地无法连接网络还是单独docekr镜像无法连网,方法是在本地ping一下公网,如果只是单纯docker无法连接网络,可以尝试下面的方法:
    1.使用–net:host选项sudo docker run --net:host --name ubuntu_bash -i -t ubuntu:latest /bin/bash

    2.使用–dns选项sudo docker run --dns 8.8.8.8 --dns 8.8.4.4 --name ubuntu_bash -i -t ubuntu:latest /bin/bash

    3.改dns servervi /etc/default/docker去掉“docker_OPTS="–dns 8.8.8.8 --dns 8.8.4.4"”前的#号

    4.不用dnsmasqvi /etc/NetworkManager/NetworkManager.conf 在dns=dnsmasq前加个#号注释掉sudo restart network-managersudo restart docker

    5.重建docker0网络pkill dockeriptables -t nat -Fifconfig docker0 downbrctl delbr docker0docker -d

    6.直接在docker内修改/etc/hosts

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值