1

我从 Dockerfile 创建了一个图像:

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

这可行,但我想将 mosquitto 作为服务启动(是否推荐?)。但是当我将最后一行替换为

CMD service mosquitto start

服务未启动且容器未运行(但在创建映像期间未收到错误消息)

4

2 回答 2

1

在我看来,使用容器作为启动主机服务的一种方式似乎缺少容器的意义。“容器化”的应用程序应该可以随时启动/停止。如果您希望有一个长期运行的容器来提供您希望始终运行的服务,那么将--restart=always选项添加到您的 docker run 命令中。这样当主机启动/重启,Docker 服务启动时,你的容器也会自动启动。The 12 Factor App是关于容器化应用程序的一个很好的注意事项列表

于 2017-06-04T22:29:58.467 回答
0

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

检查 docker ps -a 以查看容器是否刚刚退出:要使容器运行,您需要确保其主进程保持在前台并且不会立即退出。

尝试 docker 镜像toke/docker-mosquitto,看看容器是否从它运行。

于 2016-07-05T06:47:03.720 回答