我有一些docker容器,例如my_container 我想在我的容器中运行一个很长的生存脚本,但是在离开shell的时候不要杀死它
我想做那样的事情
docker exec -ti my_container /bin/bash
然后
screen -S myScreen
然后
在屏幕上执行我的脚本并退出终端
不幸的是,我无法在docker terminal中执行屏幕
答案 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"
答案 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