2017-09-15 106 views
1

我是新來泊塢窗,試圖建立我的第一個泊塢窗容器上AWS免費帳戶層例如t2.micro泊塢窗運行失敗運行容器

我能夠建立我的搬運工基於以下Dockerfile

FROM java:8 
COPY content-service/
RUN chmod +x /bin/start.sh 

CMD bash -C '/bin/start.sh' 

EXPOSE 8081 

MAINTAINER Velu 

它失敗並退出時,正試圖運行容器命令下面的錯誤信息越來越。

[[email protected] cis-docker]$ sudo docker images 
REPOSITORY   TAG     IMAGE ID   CREATED    SIZE 
content-service  latest    9fa3ca5a8ac3  10 minutes ago  705.7 MB 
docker.io/java  8     d23bdf5b1b1b  8 months ago  643.1 MB 

[[email protected] cis-docker]$ sudo docker --debug run -p 8082:8082 content-service 
DEBU[0000] framesize: 18 
Starting service. 
DEBU[0000] Corrupted prefix: [] 
DEBU[0000] [hijack] End of stdout 

任何幫助,將不勝感激。

+0

變化'-C'到'-c'也什麼'/斌/ start.sh'的內容 –

回答

0

我發現並解決了這個問題。

在我的start.sh腳本最後一行我有下面這行。

java -cp $CLASS_PATH $JVM_OPTIONS $CLASS_NAME ${ARGUMENTS[@]} & echo $! > $PID_FILE 

在那行,我沒有刪除此&回聲$! > $ PID_FILE

工作:

java -cp $CLASS_PATH $JVM_OPTIONS $CLASS_NAME ${ARGUMENTS[@]} 
0

我通過複製一個打印「hello」到控制檯的簡單shell腳本來運行你的docker文件。它成功運行。

此外,它似乎不像你的碼頭集裝箱正在退出。 Docker正在運行你的shell腳本並正常退出。要驗證,在docker運行完成後立即運行以下命令,檢查docker run命令的退出代碼。

echo $?

如果屏幕上面的命令打印出「0」,那麼碼頭工人沒有失敗。

如果您希望shell腳本作爲後臺守護程序運行,則需要確保腳本不會退出。 Docker容器在CMD行指定您的Docker腳本後立即退出的原因是您的Dockerfile完成執行,因爲Docker的設計理念是運行one process per container。在你的情況下,單一進程是你的shell腳本。因此,啓動在shell腳本中作爲前臺進程啓動的任何服務,只要該服務正在運行,容器就會繼續運行。一旦該服務死亡,你的容器就是你想要的。

希望有所幫助。