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

在docker容器中运行脚本,并在离开终端时不终止脚本,docker,screen,Docker,Screen,我有一些docker容器,例如我的容器 我想在我的容器中运行一个长期存在的脚本,但不要在离开外壳时杀死它 我想做那样的事 docker exec -ti my_container /bin/bash 然后 screen -S myScreen 然后 在屏幕中执行我的脚本并退出终端 不幸的是,我无法在docker terminal中执行screen如果必须在已经运行的容器中直接运行脚本,则可以使用exec执行: docker exec my_container /path/to/some_

我有一些docker容器,例如我的容器 我想在我的容器中运行一个长期存在的脚本,但不要在离开外壳时杀死它

我想做那样的事

docker exec -ti my_container /bin/bash 
然后

screen -S myScreen 
然后

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


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

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

docker exec my_container /path/to/some_script.sh
或者,如果您想通过Php运行它:

docker exec my_container php /path/to/some_script.php
也就是说,您通常不希望在已经运行的容器中运行脚本,而只希望使用与一些已经运行的容器相同的映像。您可以通过标准的
docker运行来实现这一点:

docker run -a stdout --rm some_repo/some_image:some_tag php /path/to/some_script.php

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

这可能会对您有所帮助

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

docker exec-i-t c2ab7ae71ab8 sh-c“exec>/dev/tty 2>/dev/tty如果脚本是php脚本,那么只需将其作为php脚本运行即可。我已经用一个例子修改了我的答案。这是否可以在容器中运行,一个在此容器中的脚本?是的,它可以工作,但我没有脚本输出。ans CLUE运行screen时会收到什么错误消息?