我是码头新来的。试图用传输来建立小图像。这是我的文档
#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"]然后我启动容器:
docker run transmission它马上就退出了。我认为它将保持运行,因为传输守护进程应该保持运行。我也尝试过入口点,但是结果是一样的。但是,下一个版本如预期的那样工作:
ENTRYPOINT ["/usr/bin/transmission-daemon"]
CMD ["-h"]它运行,显示传输帮助和退出。关于Docker如何在容器中运行应用程序,我错过了什么?
发布于 2016-09-20 12:21:50
只要容器启动的进程处于活动状态,Docker就会保持容器运行。如果容器在运行时启动守护进程,那么守护进程启动脚本就是process所监视的。当它完成时,容器就会退出--因为Docker没有监视脚本生成的后台进程。
通常情况下,您的CMD或ENTRYPOINT将运行交互过程,而不是守护版本,您可以让Docker负责将容器放在docker run -d的后台。( CMD和ENTRYPOINT之间的实际区别是关于允许用户以不同的方式从映像中运行容器。的)。
如果您想在容器中运行一个已建立的应用程序,那么检查Docker是值得的。码头集线器上有一堆传输图像,您可以直接使用它,也可以查看它们的Dockerfile以查看映像是如何生成的。
https://stackoverflow.com/questions/39593473
复制相似问题