是否有容器继续运行的最低条件 运行?
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
个,不是很有趣。)
为什么当入口点在后台指定运行命令时容器退出?
例如。如果我 运行 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
个,不是很有趣。)