在docker集装箱上不能启动蚊子作为服务

我从Dockerfile创build一个图像:

FROM debian:latest RUN apt-get update && apt-get install -y \ mosquitto \ && rm -rf /var/lib/apt/lists/* # mosquitto setup EXPOSE 1883 COPY config/broker/conf.d/ /etc/mosquitto/conf.d/ CMD mosquitto 

这工作,但我想开始蚊子作为一种服务(是否推荐呢?)。 但是当我replace最后一行时

 CMD service mosquitto start 

该服务不启动&我的容器没有运行(但我没有得到一个错误消息,在图像创build过程中)

服务不启动&我的容器没有运行

检查docker ps -a来查看一个容器是否已经退出:为了让你的容器运行,你需要确保它的主进程保持在前台,并且不会立即退出。

尝试toke/docker-mosquitto image toke/docker-mosquitto来查看容器是否从容器运行。

使用一个容器作为启动一个主机服务的方式似乎让我错过了容器的要点。 “集装箱化”的应用程序应该可以随时启动/停止。 如果你正在寻找一个长期运行的容器来提供你想要始终运行的服务,那么在你的--restart=always run命令中添加--restart=always选项。 这样,当主机启动/重启,Docker服务启动时,你的容器也会自动启动。 关于集装箱化应用程序的一个很好的清单是The 12 Factor App