无法运行脚本添加到现有的docker集装箱

我有一个没有问题的容器。 我添加了一个bash脚本来补充已经在容器中的其他几个脚本。 docker镜像将2个脚本复制到/ usr / local / bin,并且可以使用docker exec -c容器名称存在脚本访问它们。

我将自己的脚本添加到相同的目录,并运行相同的命令时,我得到一个错误,exec不能运行该脚本:没有文件或目录,脚本不位于$ PATH。 我检查path,果然,列出了/ usr / local / bin。 我检查了权限,脚本是755。

然后我用Docker exec -it mycontainer bash打开一个交互式shell,并运行/ usr / local / bin / myscript,它运行没问题。

为什么我不能像其他两个(包含在图像中)那样从容器外运行脚本。 所有这三个function一天几乎没有什么特别的程序,一个列表文件,一个添加文件,一个读取文件。

基地是Ubuntu。

编辑:find我遇到问题的地方。 如果有其他人碰巧犯了同样的错误,提供答案。

编辑2:所以与docker图像来执行一些常见的函数的脚本调用图像不是容器,所以我添加脚本到容器对脚本没有影响,这就是为什么我一直得到没有文件或目录错误。

这个脚本中的代码是: docker run --rm -v "$(pwd)/config":/path/to/file -ti image_name:latest" mynewscript $@

当然,这是违背形象而不是容器。

一旦我注意到,我试图运行而不是运行它,它运行没有错误,就像这样:

docker exec -it container_name mynewscript

原因是“/ usr / local / bin”不在脚本的$ PATH中,您可以在脚本中明确使用/ usr / local / bin / myscript。 或者先在脚本中导出$ PATH。

当我添加片段来帮助解释问题时,我发现问题和解决scheme。

所以我使用另一个脚本访问主机容器内的脚本,这个脚本允许你根据switch case来做不同的事情。 这些脚本是针对docker镜像而不是容器调用的,所以我添加的脚本实际上并不存在于镜像中。

我修改脚本来调用容器,而不是图像,它按预期工作。

编辑:我更新了答案的问题,但我也在这里添加它:

所以,docker镜像附带的脚本执行一些常用的函数,而不是容器,所以我把脚本添加到容器中对脚本没有任何影响,这就是为什么我一直得到no文件或目录错误的原因。

问题脚本中的行是:

docker run --rm -v "$(pwd)/config":/path/to/file -ti image_name:latest" mynewscript $@

当然,这是违背形象而不是容器。

一旦我注意到,我试图运行而不是运行它,它运行没有错误,就像这样:

docker exec -it container_name mynewscript