运行Docker容器时提示‘java not found’错误的排查求助
问题分析与解决方案
错误原因
- CMD指令语法错误:你的
CMD ["java" "-jar", "/tmp/abc.jar"]中,数组元素java和-jar之间缺少逗号分隔符。Docker会将这个错误的数组解析为一个整体命令,系统找不到名为[java -jar的可执行文件,因此抛出/bin/sh: 1: [java: not found的错误。 - 冗余的多阶段构建指令:
FROM centos:centos7是多阶段构建的第一个阶段,但后续没有引用该阶段的任何内容,属于完全多余的指令,只会增加构建的不必要开销。
修正后的Dockerfile
FROM adoptopenjdk/openjdk8:jre8u352-b05-ea-ubuntu-nightly EXPOSE 8080 WORKDIR /home/centos COPY ./abc.jar /tmp/abc.jar CMD ["java", "-jar", "/tmp/abc.jar"]
验证步骤
- 重新构建镜像:
docker build -t your-image-name . - 运行容器:
docker run -p 8080:8080 your-image-name
adoptopenjdk镜像确实已配置好Java环境变量,只要CMD语法正确就能正常找到java命令启动应用。
内容的提问来源于stack exchange,提问作者user2315104
相关产品推荐
相关产品推荐

