这是docker run输出:
hausey@ubuntu:~/niso2-jxj934$ docker run niso2-jxj934
Test version: 15:59, Mar 24th 2020
Question 1: Evaluation of expression.
Command failed: /bin/bash -c "python /bin/jxj934.py -question 1 -expr \"(ifleq (ifleq -1.11298616747 1.63619642199 (sub -1.11298616747 -1.11298616747) 1.7699684348) (add (exp -0.822479932786) 1.39992604386) (add -1.11298616747 (exp 0.385042309638)) 0.205973267133)\" -n 10 -x \"-0.168958230447 -0.131749160548 0.0971246476126 1.8706205565 -0.464122426299 2.35887369763 -0.375948313434 -0.613901105864 0.411326743135 -0.149276696072\"" Exit status: exited with code 127 stderr: /bin/bash: python: command not found
Run Code Online (Sandbox Code Playgroud)
这是 Dockerfile:
FROM pklehre/niso2020-lab2-msc
ADD jxj934.py /bin
CMD ["-username","jxj934", "-submission", "python /bin/jxj934.py"]
Run Code Online (Sandbox Code Playgroud)
这是检查python:
hausey@ubuntu:~/niso2-jxj934$ which python
/usr/bin/python
Run Code Online (Sandbox Code Playgroud)
这与python的PATH有关吗?
通常,它与 的值有关,PATH但具体而言,该图像只有python3。换句话说,通过文件系统查看
find / -name -type f "python*"
Run Code Online (Sandbox Code Playgroud)
在中查找名为“python*”的常规文件
/
只有python3结果。
...
/usr/bin/python3.8
/usr/bin/python3.7
...
Run Code Online (Sandbox Code Playgroud)
一个快速的解决方案是python3在您的 CMD 行 ( python3 /bin/jxj934.py) 中指定。另一种是添加软链接(ln -s /usr/bin/python /usr/bin/python3.8)。最好的解决方案是使用包管理器解决它。再说一次,这取决于您是否可以控制Dockerfile+ 图像。
当您查询时which python,您是在本地机器上进行的。容器运行在与您不同的文件系统命名空间中,并使用完全不同的终端。容器的行为与您的机器不同,任何此类调查只有在容器内运行时才会产生相关结果。
与您的问题有点无关,但它可能对您有用。
docker run有一个--entrypoint选项可以让您覆盖图像的入口点。您可以要求 bash 并探索容器。
docker run --it --entrypoint=bash pklehre/niso2020-lab2-msc
Run Code Online (Sandbox Code Playgroud)
请注意,
bash必须在 $PATH 中。
| 归档时间: |
|
| 查看次数: |
2769 次 |
| 最近记录: |