2017-09-15 127 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脚本中作为前台进程启动的任何服务,只要该服务正在运行,容器就会继续运行。一旦该服务死亡,你的容器就是你想要的。

希望有所帮助。