Docker使.sh可执行文件运行

我正在试图赋予我的脚本在Docker镜像的可执行权限,并运行它。 我不想在Dockerfile中为它设置chmod + x。 我试过了

docker run img / bin / bash -c“chmod + x ../test/test.sh; ../test/test.sh

但我得到了“/ bin / bash:糟糕的解释器:文本文件忙”

我不能用这个命令做两个容器:

docker run -d img chmod + x ../test/test.sh

docker运行-D img ../test/test.sh

=>启动容器进程导致“exec:\”../test/test.sh \“:权限被拒绝”

我需要以某种方式将这两个容器绑定在一起

Text file busy意味着某些东西已经在使用该文件。

通常这会工作

 docker run --rm -it alpine sh -c 'echo "echo it works" > test.sh && chmod +x test.sh && ./test.sh' 

用第二个命令创build两个新的容器,完全是分开的。 如果你想在正在运行的容器中执行一些东西,你可以使用docker exec -it <container id or name> <command eg bash>

如果您只是将脚本作为parameter passing,则不需要设置烫发:

 docker run -d IMAGE /bin/bash ../test/test.sh 

(如果你需要添加-i和/或-t

好吧,我已经想通了:

首先我做了一个容器:

 docker run --name CONTAINER -dt IMAGE 

然后执行我的命令:

 docker exec CONTAINER chmod +x ../test/test.sh docker exec CONTAINER ../test/test.sh