2016-12-06 38 views
1

我正在嘗試與log.io建立一個碼頭集裝箱。 如果我手動運行:碼頭構建完成後。容器不顯示,爲什麼?

docker run -it node:argon -p 28777:28777 -p 28778:28778 -p 8000:80 /bin/bash 

和你在Dockerfile看到那麼一切都完美的作品,我能夠登錄到使用http服務的命令內手動運行。

FROM node:argon 

WORKDIR Logz.io/src/ 

RUN useradd -ms /bin/bash ubuntu 

#RUN mkdir /root/.log.io \ 
#  && touch /root/.log.io/harvester.conf \ 
#  && touch /root/.log.io/log_server.conf \ 
#  && touch /root/.log.io/web_server.conf 

#RUN chmod g+rwx /root/logzio 
RUN apt-get update \ 
     && apt-get install -y vim net-tools 

RUN npm install log.io 

RUN /node_modules/log.io/bin/log.io-server & 

RUN /node_modules/log.io/bin/log.io-harvester & 

EXPOSE 28777 
EXPOSE 28778 
EXPOSE 8000 

但是,如果我運行:

docker build . 

創建容器,一切已安裝,但:

  1. 當創作完成後,我跑docker ps -a,容器是不顯示(儘管我在運行docker inspect時得到了詳細信息)。
  2. 當我通過http瀏覽它時,Log.io服務不可用。

任何人都知道我在做什麼錯了?

回答

6

Docker構建不創建容器,它創建一個圖像。

如果你這樣做:

docker build -t "myimage:0.1" . 

然後做

docker run -it myimage:0.1 -p 28777:28777 -p 28778:28778 -p 8000:80 /bin/bash 

根據您剛剛構建的圖像上,將實例化一個容器。

0

當您完成從Dockerfile構建image時,容器將不可用。您將需要創建一個container已創建

你可以看到你的形象與命令docker images

從圖像的該列表中image,您可以通過docker run ...

如果創建容器在運行Docker容器後,您的Docker容器不可見,這可能會導致Docker文件不能正常工作。

+0

按照你所說的做完一個容器後,當我在裏面時,我發現節點服務沒有運行,知道爲什麼? –

+1

您可能需要使用ENTRYPOINT和CMD,請參閱此Flask示例,http://containertutorials.com/docker-compose/flask-simple-app.html。 這個提供的設置將在容器創建時生成一個運行的Flask服務器。或者,你可以在你的'docker run ...'命令中明確執行服務器。 我不使用NPM那麼多,但這應該翻譯相同。 –