由于出现此错误,无法运行 docker 容器:无法访问 jarfile app.jar

Posted

技术标签:

【中文标题】由于出现此错误,无法运行 docker 容器:无法访问 jarfile app.jar【英文标题】:unable to run docker container as getting this error:Unable to access jarfile app.jar 【发布时间】:2021-01-07 18:32:19 【问题描述】:

我使用下面的 Docker 文件创建了图像。当我使用此图像在容器中运行它时,它在本地工作正常[docker run -p 80:8080 username/spring-boot-docker-aws-demo:tag

FROM openjdk:8-jdk-alpine
COPY target/spring-boot-docker-aws-demo.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","app.jar"]

我已将此映像推送到 Docker 集线器以在 EC2 实例中运行它。当我运行它时,它说“错误:无法访问 jarfile app.jar”

https://hub.docker.com/layers/chaituu/spring-boot-docker-aws-demo/docker-aws-demo-tag/images/sha256-110363a016eb2250264d96c8890dede518d8e519fdc9a27174334fe1096a540e?context=repo

可能是什么问题?

【问题讨论】:

【参考方案1】:

我今天遇到了类似的问题(尽管在我的情况下它甚至不会在本地运行)。这是您的 Dockerfile 在我的修复后的样子:

FROM openjdk:8-jdk-alpine
COPY target/spring-boot-docker-aws-demo.jar /app/app.jar
EXPOSE 8080
ENTRYPOINT ["sh"]
CMD ["-c", "java -jar /app/app.jar"]

【讨论】:

ENTRYPOINT 的用法不是很好:如果您尝试使用 docker run --rm yourimage /some-script.sh(有效)与 docker run --rm yourimage ls /(失败),它可能会导致非常混乱的行为。您也不需要写出sh -c,因为只需指定CMD java -jar /app/app.jar 就会自动为您插入它。除了显式的/app 路径外,这看起来与问题中的 Dockerfile 基本相同。 @David Maze 你有一点我可以跳过入口点并使用CMD java -jar /app/app.jar。至于显式路径,我一直认为图像中指定的工作目录可能会以某种方式被覆盖(例如,如果您使用 docker run --workdir /somedir ... 运行图像。 @Konrad Botor 即使在修改更改后也无法正常工作。奇怪的是,它在本地工作,但是一旦我将图像推送到 DockerHub 并在 EC2 框中运行,然后就会看到这个错误。 sudo docker run -p 80:8080 chaituu/spring-boot-docker-aws-demo:docker-aws-demo-tag 错误:无法访问 jarfile app.jar 您确定您的 EC2 实例提取了最新版本的映像,而不是使用缓存的旧版本吗?

以上是关于由于出现此错误,无法运行 docker 容器:无法访问 jarfile app.jar的主要内容,如果未能解决你的问题,请参考以下文章

无法在 CentOS 上运行的 Docker 容器中使用 yum

Django docker 容器无法连接到 mysql 容器,出现错误“无法连接到 'db' (111) 上的 MySQL 服务器”)

docker中出现容器未运行无法进入容器的操作

问题记录:Start : 由于出现以下错误,无法运行此命令: 系统找不到指定的文件。。

无法连接到 Docker 容器内的 MongoDB

无法打开到 localhost:9200 的 TCP 连接 - Rails on Docker compose