簡體   English   中英

運行 docker 映像時返回“bin/bash: python: command not found”

[英]“bin/bash: python: command not found” returned when running docker image

這是docker run output:

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

這是 Dockerfile:

FROM pklehre/niso2020-lab2-msc
ADD jxj934.py /bin
CMD ["-username","jxj934", "-submission", "python /bin/jxj934.py"]

這是檢查python

hausey@ubuntu:~/niso2-jxj934$ which python
/usr/bin/python

這與 python 的路徑有關嗎?

通常,它與PATH的值有關,但具體來說,該圖像只有python3 換句話說,通過文件系統查看

find / -name -type f "python*"

/中查找名為“python*”的常規文件

只有python3結果。

...
/usr/bin/python3.8
/usr/bin/python3.7
...

一個快速的解決方案是在您的 CMD 行 ( python3 /bin/jxj934.py ) 中指定python3 另一種是添加軟鏈接( ln -s /usr/bin/python /usr/bin/python3.8 )。 最好的解決方案是使用 package 管理器來解決它。 再說一次,這取決於您是否控制了Dockerfile + 圖像。

當您查詢which python時,您是在本地計算機上進行的。 該容器在與您的不同的文件系統命名空間中運行,並且使用完全不同的終端。 容器的行為與您的機器不同,任何此類調查只有在容器內運行時才會產生相關結果。

與您的問題有點無關,但它可能對您有用。
docker run有一個--entrypoint選項,允許您覆蓋圖像的入口點。 您可以詢問 bash 並探索容器。

docker run --it --entrypoint=bash pklehre/niso2020-lab2-msc

請注意, bash必須在 $PATH 中。

暫無
暫無

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

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