泊坞窗运行失败运行容器
问题描述:
我是新来泊坞窗,试图建立我的第一个泊坞窗容器上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
任何帮助,将不胜感激。
答
我发现并解决了这个问题。
在我的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[@]}
答
我通过复制一个打印“hello”到控制台的简单shell脚本来运行你的docker文件。它成功运行。
此外,它似乎不像你的码头集装箱正在退出。 Docker正在运行你的shell脚本并正常退出。要验证,在docker运行完成后立即运行以下命令,检查docker run命令的退出代码。
echo $?
如果屏幕上面的命令打印出“0”,那么码头工人没有失败。
如果您希望shell脚本作为后台守护程序运行,则需要确保脚本不会退出。 Docker容器在CMD行指定您的Docker脚本后立即退出的原因是您的Dockerfile完成执行,因为Docker的设计理念是运行one process per container。在你的情况下,单一进程是你的shell脚本。因此,启动在shell脚本中作为前台进程启动的任何服务,只要该服务正在运行,容器就会继续运行。一旦该服务死亡,你的容器就是你想要的。
希望有所帮助。
变化'-C'到'-c'也什么'/斌/ start.sh'的内容 –