linux - docker在后台运行一个shell脚本而不退出容器

标签 linux docker

我正在尝试在我的 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/

相关文章:

linux - 是否有任何用于将 nodejs 应用程序上传到我自己的 linux 服务器的 linux 脚本?像 appfog 或 heroku

linux - shell 条件问题

c++ - Anjuta 如何改变提示框的颜色?

docker - Docker 容器中的 Cuda 运行时/驱动程序不兼容

docker - 在运行时替换Dockerfile的ENV值

ssl - docker nginx容器上配置https失败,一直报超时

linux - awk + ​​从用双引号定义的行打印字段

linux - PCI 夹层卡有时在 x86 机器中获取 "reserved IRQ0"

Docker 将 phpmyadmin 连接到我的 MySQL 服务器

docker - Docker访问本地主机