2016-11-17 87 views
0

我嘗試通過ftp從python3 docker容器中下載文件,該容器是從官方docker hub python存儲庫構建的。在dockerized python3 ftp命令RETR引發ConnectionResetError

這裏是Python代碼的一個小例子,我試圖執行:

import ftplib 

ftp = ftplib.FTP("ftp.geneontology.org") 
ftp.login() 
ftp.sendcmd("MDTM /go/ontology/go-basic.obo") 
ftp.retrbinary("RETR /go/ontology/go-basic.obo", callback=open("go-basic.obo", "wb").write) 

此代碼的MDTM和RETR命令行之有效的主機。

但是,在python3 docker容器中只有MDTM命令有效。 RETR命令引發以下錯誤消息:

>>> ftp.retrbinary("RETR /go/ontology/go-basic.obo", callback=open("ich.obo", "wb").write) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/local/lib/python3.5/ftplib.py", line 443, in retrbinary 
    data = conn.recv(blocksize) 
ConnectionResetError: [Errno 104] Connection reset by peer 
>>> 

我Dockerfile看起來是這樣的:

FROM python:3 
CMD ["/bin/bash"] 

我建立,這個順序進入容器和Python外殼:

docker build --tag bue/py3ftp . 
docker images 
docker run -ti --name=abc bue/py3ftp /bin/bash 
python 

我盒配置有以下軟件:

  • OSX 10.11.6 ElCapitan
  • VirtualBox的版本由搬運工機
  • 搬運工機版本0.8.2使用5.1.8 r111374(Qt5.5.1),構建e18a919
  • 搬運工版本1.12.3,構建6b644ec
  • 蟒蛇3.5.2(默認11月10日2016年,8點25分20秒)泊塢窗容器

裏面有沒有人一個想法,其中的錯誤所在? 爲什麼這不起作用? 也許我必須打開一個端口或什麼?

感謝您的任何意見! Best, Elmar

回答

1

終於找到了這個bug。 相反的:

docker run -ti --name=abc bue/py3ftp /bin/bash 

使用:

docker run -ti -P --name=abc bue/py3ftp /bin/bash 

或:

docker run -ti -p 21:21 --name=abc bue/py3ftp /bin/bash 

艾瑪