2016-07-05 108 views
1

我從Dockerfile創建的圖像:無法啓動mosquitto作爲服務於泊塢窗容器

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 

最後一行的服務沒有啓動&我的容器沒有運行(但我沒有得到的圖像創建過程中的錯誤消息)

回答

0

的服務沒有啓動&我的容器沒有運行

入住泊塢窗PS -a,看是否有容器剛剛退出:你的容器來運行,你需要確保其主要工藝停留在前臺並做不立即退出。

嘗試使用docker圖像toke/docker-mosquitto查看容器是否從其運行。

+0

這就是我想說的:在'docker start'和'docker ps -a'後我的容器狀態'退出'。我想用我自己的Dockerfile,因爲我做某事。更多。上面的Dockerfile只是用於複製的最小片段。 – Munchkin

+0

@Munchkin這意味着你的主命令立即啓動並退出。嘗試以https://github.com/toke/docker-mosquitto的方式配置您的映像。 – VonC

+0

我只是看看回購。 「CMD [」/ usr/sbin/mosquitto「,」-c「,」/mqtt/config/mosquitto.conf「]是否將mosquitto作爲服務啓動,就像'service mosquitto start'服務一樣? – Munchkin

0

使用容器作爲啓動主機服務的一種方式似乎讓我忽略了容器的要點。 「集裝箱化」的應用程序應該可以隨時啓動/停止。如果您希望有一個長期運行的容器提供您希望始終運行的服務,那麼將--restart=always選項添加到您的docker run命令中。這樣當主機啓動/重啓時,Docker服務啓動後,你的容器也會自動啓動。 do &關於集裝箱化應用程序的一個不錯的清單是The 12 Factor App