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

use*_*210 6 screen docker

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

我想做那样的事情

docker exec -ti my_container /bin/bash 
Run Code Online (Sandbox Code Playgroud)

进而

screen -S myScreen 
Run Code Online (Sandbox Code Playgroud)

然后

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

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

Eli*_*Eli 0

如果您必须直接在已运行的容器中运行脚本,您可以使用以下命令来执行此操作exec

docker exec my_container /path/to/some_script.sh
Run Code Online (Sandbox Code Playgroud)

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

docker exec my_container php /path/to/some_script.php
Run Code Online (Sandbox Code Playgroud)

也就是说,您通常不想在已经运行的容器中运行脚本,而是只想使用与某些已经运行的容器相同的映像。您可以使用标准来做到这一点docker run

docker run -a stdout --rm some_repo/some_image:some_tag php /path/to/some_script.php
Run Code Online (Sandbox Code Playgroud)