Der*_*ang 8 docker docker-container
我正在做一些非常简单的事情。这是我的Dockerfile:
FROM alpine:latest
ADD hello.sh /bin/hello
RUN chmod +x /bin/hello
CMD /bin/hello
Run Code Online (Sandbox Code Playgroud)
然后我构建图像:
docker build -t hello .
Run Code Online (Sandbox Code Playgroud)
然后我运行图像:
docker run hello
Run Code Online (Sandbox Code Playgroud)
这是输出:
/bin/sh: /bin/hello: not found
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种情况?如果我运行:
docker run hello cat /bin/hello
Run Code Online (Sandbox Code Playgroud)
我可以看到我的脚本内容,这让我更加困惑。
小智 12
就我而言,问题是脚本的行结尾被Windows编码而不是Linux. (注意:这实际上是由git自动转换它们引起的,我禁用了它们)
脚本的第一行提供 shell 的文件路径。由于\rWindows EOL 中包含的额外内容,系统尝试将该隐藏字符附加到文件名,这就是导致错误的原因Not Found。
这听起来像是您试图执行一个bash脚本,但 alpine 默认情况下不包含bash. 相反,您需要通过sh将 shebang 行更改为 来执行脚本#!/bin/sh。
实际上,脚本正在执行,但实际上是说脚本/bin/bash不存在。
未找到的文件可能来自:
| 归档时间: |
|
| 查看次数: |
46080 次 |
| 最近记录: |