簡體   English   中英

如何從Docker容器中使用奇點運行python程序?

[英]How to run a python program using Singularity from a docker container?

我已經為我的純python程序創建了一個docker容器,並將python main.py設置為在容器運行時執行。 在本地計算機上按預期運行容器。 但是,我想在我機構的高性能集群上運行該容器。 集群機器使用Singularity ,我用它來提取托管在Dockerhub上的Docker映像(存儲庫為darshank11 / ga_paci_final)。 但是,當我嘗試運行奇異容器時,出現以下錯誤: python3: can't open file 'main.py': [Errno 2] No such file or directory.

我試圖更改Dockerfile中的基本映像,例如從FROM python:latest更改為FROM ubuntu:latest. 我確保docker容器在我的本地計算機上工作,然后讓我的一位同事從Dockerhub中拉出容器並運行它。 一切正常,直到我達到奇點。

這是我的docker文件:

FROM ubuntu:16.04

RUN apt-get update -y && \
    apt-get install -y python3-pip python3-dev

RUN mkdir src
WORKDIR /src
COPY . /src

RUN pip3 install --upgrade pip
RUN pip3 install -r requirements.txt

CMD ["python3", "-u", "main.py"]

您收到該錯誤的原因是執行上下文不是您所期望的。 奇異的運行路徑是主機OS上的當前目錄(例如~/ga_paci_final ),該目錄已安裝到奇異映像中。

如評論中所述,一種解決方案是在docker CMD語句中提供python文件的完整路徑。 另一個選擇是將奇異性定義文件的%runscript塊修改為:

%runscript
    cd /src
    python3 -u main.py

這樣,您可以確保Docker和Singularity之間的運行環境相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM