在Docker容器中运行脚本并在离开终端时不杀死脚本

6

我有一些 Docker 容器,例如我的容器 my_container。我想在容器中运行一个长时间的脚本,但不要在离开 shell 后停止它。

我想做类似于这样的事情:

docker exec -ti my_container /bin/bash 

然后

screen -S myScreen 

然后

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

不幸的是,在docker终端中无法执行screen命令


当您运行screen时,您会收到什么错误消息? - CivFan
3个回答

2

这可能会对你有所帮助。

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

这是参考链接


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

如果脚本是 PHP 脚本? - user2626210
然后将其作为 PHP 脚本运行。我已经在我的答案中添加了一个示例。 - Eli
能否在容器中运行一个已经存在于该容器中的脚本? - user2626210
是的,它可以工作,但我没有脚本输出和线索。 - user2626210

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接