是否有容器继续运行的最低条件 运行?

Is there a min condition for a container to continue running?

为什么当入口点在后台指定运行命令时容器退出? 例如。如果我 运行 docker run -d ubuntu bash -c "sleep 12000&" 容器退出。如果我 运行 docker run -d ubuntu bash -c "sleep 12000" 容器继续 运行.
难道后台进程不足以保持容器 运行ning 吗?
为什么后台或前台的 sleep 运行ning 会影响这个?

根据 Docker 的 mans,容器应该是 运行 而

the container’s primary process (PID 1) is running

在您的情况下,主进程 bash 和容器 "runs" 直到该进程退出。

根据葡萄的建议,条件是PID 1是运行ning。

该容器被设计为短期的,专门用于一项任务(微服务),运行在前台作为 PID 1。后台对于ssh之类的东西当然有用,但是容器得有个主干。

大多数服务都可以 运行 在前台或后台(deamonized)

PS。如果您必须让容器保持活动状态,请将 tail -f /dev/null 用作 CMD

一个简单的标准可能如下:如果你在本地 运行 命令并且它立即 returns 并给你一个 shell 提示,那么如果你 运行 该命令作为容器中的主进程,容器会立即退出。

通常的最佳做法是让容器 运行 一些进程,如网络服务器,作为 foreground 进程,当该服务器退出时,容器就完成了.在理想情况下,容器是完全自主的:一旦你 docker run 它,它就会在没有任何用户干预的情况下完成它的工作。 (在这个模型中,一个普通的 Ubuntu 容器,没有安装任何软件,只有 sleep 个,不是很有趣。)