2016-11-17 5 views
0

python3ドッカーコンテナの内部からftp経由でファイルをダウンロードしようとしています。コンテナは公式のドッカーハブの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ドッカーコンテナでは、MDTMコマンドだけが動作します。

>>> 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 

マイRETRコマンドは、次のエラーメッセージがスローされますボックスは、次のソフトウェアで構成されています。

    ドッカーマシン
  • ドッカー・マシン・バージョン0.8.2で使用
  • OSX 10.11.6 ElCapitan
  • VirtualBoxのバージョン5.1.8 r111374(Qt5.5.1)は、6b644ecを構築し、e18a919
  • ドッカーバージョン1.12.3をビルド
  • ドッカ容器内のpython 3.5.2(デフォルト、2016年11月10日、8時25分20秒)

バグがあり、誰のアイデアを持って? これはなぜ機能していないのですか? 私は開かなければならないポートか何か?

すべての入力に感謝! ベスト、 エルマー

答えて

1

最後にバグが見つかりました。

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 

エルマー