Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 容器是否有继续运行的最低条件?_Docker_Docker Container_Docker Run - Fatal编程技术网

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

Docker 容器是否有继续运行的最低条件?,docker,docker-container,docker-run,Docker,Docker Container,Docker Run,当入口点指定在后台运行命令时,为什么容器会退出? 例如,如果我运行docker run-d ubuntu bash-c“sleep 12000&”容器将退出。如果我运行docker run-d ubuntu bash-c“sleep 12000”容器将继续运行。 后台的进程是否足以保持容器运行? 为什么在后台或前台运行的睡眠会影响这一点?根据Docker's mans的说法,容器应该在运行时 容器的主进程(PID 1)正在运行 在您的情况下,主进程bash和容器“运行”,直到该进程退出。根据Do

当入口点指定在后台运行命令时,为什么容器会退出? 例如,如果我运行
docker run-d ubuntu bash-c“sleep 12000&”
容器将退出。如果我运行docker run-d ubuntu bash-c“sleep 12000”容器将继续运行。
后台的进程是否足以保持容器运行?

为什么在后台或前台运行的
睡眠
会影响这一点?

根据Docker's mans的说法,容器应该在运行时

容器的主进程(PID 1)正在运行


在您的情况下,主进程
bash
和容器“运行”,直到该进程退出。

根据Docker的手册,容器应该在

容器的主进程(PID 1)正在运行


在您的情况下,主进程
bash
和容器“运行”,直到该进程退出。

正如grapes所建议的,条件是PID 1正在运行

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

大多数服务可以在前台或后台运行(非匿名)


注:如果您必须使容器保持活动状态,请使用grapes建议的
tail-f/dev/null
作为
CMD
,条件是PID 1正在运行

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

大多数服务可以在前台或后台运行(非匿名)


注:如果您必须使容器保持活动状态,请使用
tail-f/dev/null
as
CMD

一个简单的标准可能是:如果您在本地运行命令,它立即返回并返回shell提示符,那么如果您将该命令作为容器中的主进程运行,容器将立即退出


通常的最佳实践是让容器作为前台进程运行某个进程,如网络服务器,当该服务器退出时,容器就完成了。在理想情况下,容器是完全自治的:一旦您运行了docker,它就可以在没有任何用户干预的情况下完成它的工作。(在这个模型中,一个普通的Ubuntu容器,没有安装软件,只有
sleep
s,没有什么意思。)

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


通常的最佳实践是让容器作为前台进程运行某个进程,如网络服务器,当该服务器退出时,容器就完成了。在理想情况下,容器是完全自治的:一旦您运行了docker,它就可以在没有任何用户干预的情况下完成它的工作。(在这个模型中,一个普通的Ubuntu容器,没有安装软件,只有
sleep
s,这不是很有趣。)

如果我这样做
bash-c“sleep 12000&”
sleep应该仍然运行否?在docker ps中,虽然不显示upNo,
sleep
进入后台,调用方的脚本终止,因此容器被关闭。这是我的问题。后台进程无法保持容器运行?为什么不呢?因为docker守护进程判断容器是否正在运行的标准是主进程处于活动状态。如果您想保持容器处于活动状态,请将主进程设置为在后台服务工作时保持空闲,如果I do
bash-c“sleep 12000&”
sleep仍应运行否?在docker ps中,虽然不显示upNo,
sleep
进入后台,调用方的脚本终止,因此容器被关闭。这是我的问题。后台进程无法保持容器运行?为什么不呢?因为docker守护进程判断容器是否正在运行的标准是主进程处于活动状态。若要使容器保持活动状态,请将主进程设置为在后台服务工作时保持空闲