我正在做一件非常簡單的事情。這裏是我的Dockerfile
:碼頭集裝箱中找不到文件
FROM alpine:latest
ADD hello.sh /bin/hello
RUN chmod +x /bin/hello
CMD /bin/hello
然後我打造形象:
docker build -t hello .
然後我跑的形象:
docker run hello
,這裏是輸出:
/bin/sh: /bin/hello: not found
這是怎麼發生的?如果我運行:
docker run hello cat /bin/hello
我可以看到我的腳本的內容,這讓我更加困惑。
我複製你的腳步上面用我自己的碼頭工人形象,以及它工作得很好,沒有任何問題。所以,這個問題必須與你正在擺脫的碼頭形象有關。該文件顯然存在。這必須是一個權限問題。您應該檢查,看看你是什麼樣的用戶默認,您的權限,等等你能帶我們去了'Dockerfile'是高山是從哪裏來的,我們可以給更多的細節? – CtheGood
在做了更多的思考之後,我有另一個假設。對於泊塢窗圖像的入口點,可以改變你的用戶,或與您的bash終端搞亂。嘗試運行這個'docker run -it hello bash',然後在容器內部運行'hello'(並輸出)。這將告訴我們圖像的入口點和/或CMD是否有點奇怪。爲什麼你的第二個例子會工作的原因是因爲它被重寫Dockerfile的'CMD'明確。 – CtheGood
嗨@CtheGood,感謝您關注此問題。您的評論讓我思考,我確實認爲這是某種用戶/組/權限問題。所以我在一臺Ubuntu計算機上編寫了這個腳本,我試圖在一張阿爾卑斯山的圖片中運行它,這似乎是導致這個問題的原因。一旦我切換到Ubuntu的映像,問題就消失了。 –