当我尝试通过 /script.sh && /script.sh 调用它两次时,Docker 找不到我复制到图像的脚本(但一次有效!)
Docker can't find a script that I COPY to an image when I try to invoke it twice via /script.sh && /script.sh (but once works!)
我正在尝试做的一个简单示例涉及这样的 Dockerfile:
from ubuntu
COPY script.sh /script.sh
RUN chmod a+x /script.sh
和这样的脚本文件:
/script.sh
#!/bin/bash
echo hi `date`
sleep 1
echo hi `date`
我构建并 运行 像这样,一切都很好,花花公子:
docker build -t client .
docker run client /script.sh
当我执行上述操作时,我看到 'hi' 两次和日期。
现在,如果我想被告知 'hi' 四次,我想我可以这样做:
docker run client /script.sh && /script.sh
但是失败并出现错误:
bash: /script.sh: No such file or directory
很奇怪.. 因为我提供了 /script.sh 的完整路径.. 我想知道为什么 bash 找不到它。
对于内置命令,我可以 'chain' 使用“&&”运算符。例如,这很好用:
docker run client /script.sh && echo it works
谁能赐教,不胜感激!
您的命令在主机上被解析为 "docker run..." && /script.sh
,结果很明显。您可能想将其改写为 docker run ... /bin/bash -c "/script.sh && /script.sh"
我正在尝试做的一个简单示例涉及这样的 Dockerfile:
from ubuntu
COPY script.sh /script.sh
RUN chmod a+x /script.sh
和这样的脚本文件:
/script.sh
#!/bin/bash
echo hi `date`
sleep 1
echo hi `date`
我构建并 运行 像这样,一切都很好,花花公子:
docker build -t client .
docker run client /script.sh
当我执行上述操作时,我看到 'hi' 两次和日期。
现在,如果我想被告知 'hi' 四次,我想我可以这样做:
docker run client /script.sh && /script.sh
但是失败并出现错误:
bash: /script.sh: No such file or directory
很奇怪.. 因为我提供了 /script.sh 的完整路径.. 我想知道为什么 bash 找不到它。
对于内置命令,我可以 'chain' 使用“&&”运算符。例如,这很好用:
docker run client /script.sh && echo it works
谁能赐教,不胜感激!
您的命令在主机上被解析为 "docker run..." && /script.sh
,结果很明显。您可能想将其改写为 docker run ... /bin/bash -c "/script.sh && /script.sh"