首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解Dockerfile CMD/ENTRYPOINT

理解Dockerfile CMD/ENTRYPOINT
EN

Stack Overflow用户
提问于 2016-09-20 11:58:01
回答 1查看 540关注 0票数 1

我是码头新来的。试图用传输来建立小图像。这是我的文档

代码语言:javascript
复制
#base image
FROM alpine:latest

#install Transmission
RUN apk update
RUN apk add transmission-daemon

#expose port
EXPOSE 9091

#start app
CMD ["/usr/bin/transmission-daemon"]

然后我启动容器:

代码语言:javascript
复制
docker run transmission

它马上就退出了。我认为它将保持运行,因为传输守护进程应该保持运行。我也尝试过入口点,但是结果是一样的。但是,下一个版本如预期的那样工作:

代码语言:javascript
复制
ENTRYPOINT ["/usr/bin/transmission-daemon"]
CMD ["-h"]

它运行,显示传输帮助和退出。关于Docker如何在容器中运行应用程序,我错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-20 12:21:50

只要容器启动的进程处于活动状态,Docker就会保持容器运行。如果容器在运行时启动守护进程,那么守护进程启动脚本就是process所监视的。当它完成时,容器就会退出--因为Docker没有监视脚本生成的后台进程。

通常情况下,您的CMDENTRYPOINT将运行交互过程,而不是守护版本,您可以让Docker负责将容器放在docker run -d的后台。( CMDENTRYPOINT之间的实际区别是关于允许用户以不同的方式从映像中运行容器。的)。

如果您想在容器中运行一个已建立的应用程序,那么检查Docker是值得的。码头集线器上有一堆传输图像,您可以直接使用它,也可以查看它们的Dockerfile以查看映像是如何生成的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39593473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档