我正在做一件非常简单的事情。这里是我的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的映像,问题就消失了。 –