【发布时间】:2017-03-05 18:53:33
【问题描述】:
我有一个正在运行的容器,没有任何问题。我添加了一个 bash 脚本来补充容器中已有的其他几个脚本。 docker 镜像将 2 个脚本复制到 /usr/local/bin 并且可以使用 docker exec -c container-name existingscript 访问它们。
我将自己的脚本添加到同一个目录中,并且在运行同一命令时,我收到一个错误,即 exec 无法运行脚本:没有文件或目录,脚本不在 $PATH 中。我检查了路径,果然,列出了 /usr/local/bin。我检查了权限,脚本是 755。
然后我使用 docker exec -it mycontainer bash 打开一个交互式 shell 并运行 /usr/local/bin/myscript,它运行没有问题。
为什么我不能像其他两个(包含在图像中)一样从容器外部运行脚本。这三个每天都有几乎相同的功能,不使用任何特殊程序,一个列出文件,一个添加文件,一个读取文件。
基础是 Ubuntu。
编辑:找到我遇到问题的地方。提供答案,以防其他人碰巧犯同样的错误。
EDIT-2:所以 docker 镜像附带的执行几个常用功能的脚本调用 image 而不是 container 所以我将脚本添加到容器对脚本没有影响,这就是为什么我不断收到无文件或目录错误。
有问题的脚本中的行是:
docker run --rm -v "$(pwd)/config":/path/to/file -ti image_name:latest" mynewscript $@
当然,这是针对图像而不是容器的。
一旦我注意到我尝试使用 exec 而不是 run 运行它并且它运行时没有错误,就像这样:
docker exec -it container_name mynewscript
【问题讨论】:
-
拜托,你能显示你的 docker 文件吗?