我有一些 Docker 容器,例如我的容器 my_container。我想在容器中运行一个长时间的脚本,但不要在离开 shell 后停止它。
我想做类似于这样的事情:
docker exec -ti my_container /bin/bash
然后
screen -S myScreen
然后
在screen中执行我的脚本并退出终端
不幸的是,在docker终端中无法执行screen命令
这可能会对你有所帮助。
docker exec -i -t c2ab7ae71ab8 sh -c "exec >/dev/tty 2>/dev/tty </dev/tty && /usr/bin/screen -r nmsrv -s /bin/bash"
这是参考链接
如果您必须在已经运行的容器中直接运行脚本,可以使用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
我能想到的唯一方法是在启动容器时运行您的脚本; docker run -d --name my_container nginx /etc/init.d/myscript