如何从Docker容器中使用奇点运行python程序?

时间:2019-07-15 21:20:59

标签: python docker ubuntu singularity-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"]

1 个答案:

答案 0 :(得分:1)

您收到该错误,因为执行上下文不是您期望的。奇异的运行路径是主机OS上的当前目录(例如~/ga_paci_final),该目录已安装到奇异的映像中。

如评论中所述,一种解决方案是在docker CMD语句中提供python文件的完整路径。另一种选择是将奇点定义文件的%runscript块修改为类似以下内容:

%runscript
    cd /src
    python3 -u main.py

这样,您可以确保Docker和Singularity之间的运行环境相同。