我已经为我的纯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"]
答案 0 :(得分:1)
您收到该错误,因为执行上下文不是您期望的。奇异的运行路径是主机OS上的当前目录(例如~/ga_paci_final
),该目录已安装到奇异的映像中。
如评论中所述,一种解决方案是在docker CMD
语句中提供python文件的完整路径。另一种选择是将奇点定义文件的%runscript
块修改为类似以下内容:
%runscript
cd /src
python3 -u main.py
这样,您可以确保Docker和Singularity之间的运行环境相同。