使用命令“docker run -d alpine sleep infinity”创建的容器为什么会进入停止状态?

29
我没有在容器内需要执行的内容,但是希望容器一直运行。所以,我尝试使用以下命令行创建容器:'docker run -d alpine sleep infinity'。但是,实际上容器立即进入了停止状态。这是为什么?

1
只需使用 sleep 999999999d,其中 d 表示天数。 - user674669
1
截至alpine 3.15.0版本,alpine sleep现在似乎支持无限大了。 - SOFe
3个回答

52
< p > alpine 基于 busybox,不提供 GNU 工具中可用的全部选项和扩展;infinity 作为 sleep 的选项就是一个无法使用的例子。

考虑使用以下替代方案:

docker run -d alpine sh -c 'while sleep 3600; do :; done'

1
我应该看到 'docker logs <容器 ID>'。它显示 - "sleep: invalid number 'infinity'"。 - Anand Patel

7

使用这个方法在Dockerfile中更改入口点对我很有用。

ENTRYPOINT ["/bin/sh","-c","sleep infinity"]

1
请不要将“谢谢”作为答案。相反,投票支持您认为有帮助的答案。-【来自审核】 - Blastfurnace
2
我不理解你的评论 @Blastfurnace。 - Rexave

-1

在 Docker-compose 或 Dockerfile 中,您可以使用以下命令:

command: ["/bin/ash", "-c", "sleep infinity"] ENTRYPOINT ["/bin/ash", "-c", "sleep infinity"]

似乎 Alpine 使用 ash 作为 shell。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接