0

我为我的纯 python 程序创建了一个 docker 容器,并设置python main.py为在容器运行时执行。在我的本地机器上运行容器按预期工作。但是,我想在我机构的高性能集群上运行容器。集群机器使用Singularity,我用它来提取托管在 Dockerhub 上的 docker 映像(repo 是 darshank11/ga_paci_final)。但是,当我尝试运行 Singularity 容器时,出现以下错误:python3: can't open file 'main.py': [Errno 2] No such file or directory.

我尝试更改 Dockerfile 中的基本映像,例如从FROM python:latest更改为FROM ubuntu:latest.我确保 docker 容器在我的本地计算机上工作,然后让我的一位同事从 Dockerhub 中提取容器并运行它. 一切正常,直到我到达奇点。

这是我的码头文件:

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"]
4

1 回答 1

1

您收到该错误是因为执行上下文不是您所期望的。奇点中的运行路径是主机操作系统上的当前目录(例如,~/ga_paci_final),它已被挂载到奇点映像中。

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

%runscript
    cd /src
    python3 -u main.py

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

于 2019-07-16T13:56:57.370 回答