gpt4 book ai didi

即使使用 -it 运行 Docker 容器也会退出

转载 作者:行者123 更新时间:2023-12-02 18:52:57 25 4
gpt4 key购买 nike

我正在尝试在 docker 容器中运行自定义服务。服务以 myservice start 启动- 这然后 fork 和守护主进程并退出。然后主进程在网络套接字上监听传入命令。该过程本身运行良好。

在我的 Dockerfile 中,我将其作为最后两个命令:

WORKDIR "/app/myservice"
CMD ["bin/myservice", "start"]

镜像构建成功。现在,当我像这样运行它时:
docker run -d -p 7890:7890 myimage

容器启动然后退出。在日志中,我可以看到服务在容器以退出代码 0 退出之前启动。这是预期的,因为来自 dockerfile 的命令以代码 0 退出。

this question ,很明显,如果我这样运行它:
docker run -dit -p 7890:7890 myimage

即使在启动我的服务的批处理脚本退出后,容器也应该保持运行。然而情况并非如此 - 容器终止导出立即。

我错过了什么?如何让容器保持运行?

最佳答案

比较这两个容器的生命周期

1)docker run -it ubuntu sh -c "echo Hello ; sleep 3"
2)docker run -it ubuntu sh -c "while true ; do echo Hello ; sleep 3 ; done"
检查 CMD 的文档

https://docs.docker.com/engine/reference/builder/#cmd

和入口点

https://docs.docker.com/engine/reference/builder/#entrypoint

当你
docker run -it ubuntu bash
只要您退出 bash,您的容器就会完成并退出。

还要检查

What is the difference between CMD and ENTRYPOINT in a Dockerfile?

`

关于即使使用 -it 运行 Docker 容器也会退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52838519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com