Docker使.sh可执行文件并运行它

时间:2017-05-18 16:14:38

标签: docker

我试图在docker image中为我的脚本提供可执行权限并运行它。我不想在Dockerfile中为它设置chmod + x。 我试过了

  

docker run img / bin / bash -c" chmod + x ../test/test.sh; ../测试/ test.sh

但是我得到了#34; / bin / bash:糟糕的翻译:文本文件繁忙"

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

  

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

     

docker run -d img ../ test / test.sh

=>启动容器进程导致" exec:\" ../ test / testing.sh \&#34 ;:权限被拒绝"

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

4 个答案:

答案 0 :(得分:0)

Text file busy表示某些内容已在使用该文件。

通常这会起作用

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

使用第二个命令创建两个新容器,这些容器完全独立。如果要在正在运行的容器中执行某些操作,可以使用docker exec -it <container id or name> <command e.g. bash>

答案 1 :(得分:0)

好的,我已经想到了:

首先我制作了一个容器:

docker run --name CONTAINER -dt IMAGE

然后执行我的命令:

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

docker exec CONTAINER ../test/test.sh

答案 2 :(得分:0)

如果您只是将脚本作为参数传递,则无需设置perms:

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

(如果您需要,请添加-i和/或-t

答案 3 :(得分:-1)

您可以尝试作为临时变通方法(不妙!)在chmod和执行之间添加“ sleep 1”指令。

看看这个线程: "dockerfile" text file busy

致谢