在docker容器中运行脚本,而不是在离开终端时终止脚本

时间:2016-02-01 17:57:47

标签: docker screen

我有一些docker容器,例如my_container 我想在我的容器中运行一个很长的生存脚本,但是在离开shell的时候不要杀死它

我想做那样的事情

docker exec -ti my_container /bin/bash 

然后

screen -S myScreen 

然后

在屏幕上执行我的脚本并退出终端

不幸的是,我无法在docker terminal中执行屏幕

3 个答案:

答案 0 :(得分:1)

这可能对你有所帮助。

docker exec -i -t c2ab7ae71ab8 sh -c "exec >/dev/tty 2>/dev/tty </dev/tty && /usr/bin/screen -r nmsrv -s /bin/bash"    

这是reference link

答案 1 :(得分:0)

如果必须直接在已经运行的容器中运行脚本,则可以使用exec执行此操作:

docker exec my_container /path/to/some_script.sh

或者如果你想通过Php运行它:

docker exec my_container php /path/to/some_script.php

也就是说,您通常不希望在已经运行的容器中运行脚本,而只是使用与已经运行的容器相同的映像。您可以使用标准docker run

执行此操作
docker run -a stdout --rm some_repo/some_image:some_tag php /path/to/some_script.php

答案 2 :(得分:0)

我能想到的唯一方法是在开始时使用脚本运行容器; docker run -d --name my_container nginx /etc/init.d/myscript