我正在尝试在我的 docker 容器中运行一个 shell 脚本。问题是 shell 脚本产生了另一个进程,它应该继续运行,除非另一个关闭脚本用于终止由启动脚本产生的进程。
当我运行以下命令时,
docker run image:tag /bin/sh /root/my_script.sh
然后,
docker ps -a
我看到命令已经退出。但这不是我想要的。我的问题是如何让命令在后台运行而不退出?
最佳答案
您还没有解释为什么要在脚本退出后看到容器运行,或者您是否期望脚本退出。
一个 docker 容器在容器的 CMD
后立即退出退出。如果您希望您的容器继续运行,您将需要一个可以继续运行的进程。一种选择是在脚本末尾放置一个 while 循环:
while :; do
sleep 300
done
您的脚本将永远不会退出,因此您的容器将继续运行。如果您的容器托管网络服务(Web 服务器、数据库服务器等),那么这通常是容器生命周期内运行的进程。
如果您的脚本意外退出,您可能需要查看容器日志 (docker logs <container>
),并可能在脚本中添加一些调试。
如果您只是问“如何在后台运行容器?”,那么 Emil 的回答(将 -d
标志传递给 docker run
)将为您提供帮助。
关于linux - docker在后台运行一个shell脚本而不退出容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31570208/