我有一个简单的hello world java app,我想构建运行它的Docker镜像。
Dockerfile:
FROM java:8
ADD dist/JavaApplication1.jar /JavaApplication1.jar
RUN chmod +x /JavaApplication1.jar
CMD ["/usr/bin/java -jar /JavaApplication1.jar"] # or CMD ["java -jar /JavaApplication1.jar"]
我建立它:
docker build -t myapp .
按以下方式运行:
docker run -tdi myapp
但它会抛出:
Error response from daemon: Cannot start container 105f043e565e465639e15d78e92dc74e64562faa510fae5d6ff48da3a58c0125: [8] System error: exec: "java -jar /JavaApplication1.jar": stat java -jar /JavaApplication1.jar: no such file or directory
运行时:
docker run -ti myapp bash
并且执行ls,文件在那里,当我运行" / usr / bin / java -jar /JavaApplication1.jar"一切都好。哪里有问题?
我的泊坞版:1.9.0。
答案 0 :(得分:2)
在docker 1.9.1上,您的任何一种方法都适用于我:
exec: "/usr/bin/java -jar /JavaApplication1.jar": stat /usr/bin/java -jar /JavaApplication1.jar: no such file or directory
一致
基本上你可以使用:
CMD ["executable","param1","param2"]
CMD ["param1","param2"]
CMD command param1 param2
这表明第一个arg是二进制而不是整个cmd,这就是你错误的原因。如果您按照上面的示例拆分cmd,它将正常工作。
FROM java:8
ADD dist/JavaApplication1.jar /JavaApplication1.jar
CMD ["java", "-jar", "/JavaApplication1.jar"]
奖金:不需要chmod +x