docker报错问题解决:Error Invalid or corrupt jarfile app.jar

这篇具有很好参考价值的文章主要介绍了docker报错问题解决:Error Invalid or corrupt jarfile app.jar。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.问题描述

此时处在 /home/ubuntu/app 目录下,并且在该目录下有一个 jenkins-0.0.1-SNAPSHOT.jar。

error: invalid or corrupt jarfile /app.jar,docker,jar,java,docker,linux,数据卷挂载

我在 /home/ubuntu/app 目录下执行了 docker 容器运行命令:

# 映射 8859 端口
# 容器名为 jenkins-demo
# 将 jenkins-0.0.1-SNAPSHOT.jar 复制到容器内的 /app.jar
# 以 jdk11 为容器镜像
# 执行命令 java -jar /app.jar 运行 java 程序
docker run -dp 8859:8859 \
--name jenkins-demo \
-v jenkins-0.0.1-SNAPSHOT.jar:/app.jar \
openjdk:11 \
java -jar /app.jar

但遗憾的是,当我执行命令后,并没有运行起来。

error: invalid or corrupt jarfile /app.jar,docker,jar,java,docker,linux,数据卷挂载

2.问题分析

我们先查看一下日志:

error: invalid or corrupt jarfile /app.jar,docker,jar,java,docker,linux,数据卷挂载

提示错误信息:Error: Invalid or corrupt jarfile /app.jar

该错误表示的是 jar 文件无效或损坏,于是我开始考虑是不是 -v 挂载有问题。

于是我使用 docker inspect jenkins-demo 查看该容器信息,特别是挂载情况。然后查看 Mounts 下的信息:

error: invalid or corrupt jarfile /app.jar,docker,jar,java,docker,linux,数据卷挂载

我发现 jenkins-0.0.1-SNAPSHOT.jar 成了数据卷名称,/app.jar 是容器内的目录。

这时候我才突然想起来,如果在 -v 时直接写个名称,那么 docker 会将它识别为是一个数据卷名称而不是本地文件或目录名。

🚩 即:本地目录或文件必须以 /./ 开头,如果直接以名字开头,会被识别为数据卷名而非本地目录名。例如:

# 会被识别为一个数据卷叫mysql,运行时会自动创建这个数据卷
-v mysql:/var/lib/mysql

# 会被识别为当前目录下的mysql目录,运行时如果不存在会创建目录
-v ./mysql:/var/lib/mysql

3.问题解决

我们可以将之前的 docker run 命令修改为以下两种方式:

  • 绝对路径方式

    docker run -dp 8859:8859 \
    --name jenkins-demo \
    -v /home/ubuntu/app/jenkins-0.0.1-SNAPSHOT.jar:/app.jar \
    openjdk:11 \
    java -jar /app.jar
    
  • 相对路径方式

    # 需要保存当前执行命令所在位置是在 /home/ubuntu/app 目录下,因为我将 jenkins-0.0.1-SNAPSHOT.jar 就是放在了此目录下
    docker run -dp 8859:8859 \
    --name jenkins-demo \
    -v ./jenkins-0.0.1-SNAPSHOT.jar:/app.jar \
    openjdk:11 \
    java -jar /app.jar
    

这时候我们再使用 docker inspect jenkins-demo 查看数据卷挂载情况和我们希望的一样了:

error: invalid or corrupt jarfile /app.jar,docker,jar,java,docker,linux,数据卷挂载

最后,还有一点可以注意,在指定 容器内路径 时必须使用绝对路径,即如果如下写法:

# -v 挂载时将 /app.jar 修改为 app.jar
docker run -dp 8859:8859 \
--name jenkins-demo \
-v ./jenkins-0.0.1-SNAPSHOT.jar:app.jar \
openjdk:11 \
java -jar /app.jar

error: invalid or corrupt jarfile /app.jar,docker,jar,java,docker,linux,数据卷挂载

会报错:invalid mount config for type “bind”: invalid mount path: ‘app.jar’ mount path must be absolute.文章来源地址https://www.toymoban.com/news/detail-785242.html

到了这里,关于docker报错问题解决:Error Invalid or corrupt jarfile app.jar的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker: Error response from daemon: unknown or invalid runtime name: nvidia 解决方案

    我们使用Docker的过程中往往需要使用 GPU ,于是需要安装NVIDIA Driver、NVIDIA Container Toolkit和CUDA Toolkit等工具。 如果你使用的是 Ubuntu 等Linux原生系统 + docker :你需要在 /etc/docker/daemon.json 中设置 default-runtime 为 nvidia ,然后重启 docker ,确保你启动了NVIDIA Container Toolkit。 但是如果

    2024年02月07日
    浏览(58)
  • mysql报错ERROR 1356 (HY000): View ‘mysql.user‘ references invalid table(s) or column(s) or function(s)

    当您在使用 “UPDATE user SET password=PASSWORD(‘newpassword’) WHERE User=‘root’;” 命令时提示 “ERROR 1356 (HY000): View ‘mysql.user’ references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them”,表明在您的 MariaDB 版本中,‘user’ 表已经不存在,由于版本不同的

    2024年02月14日
    浏览(44)
  • Mac解决Error: No such file or directory @ rb_sysopen报错问题

    问题小记:在Mac上安装SVN是如果缺少相关依赖包,则会出现类似标题的报错信息 说明缺少相关依赖包,再次执行brew install apr命令安装相关依赖包。 最后再重新执行brew install subversion命令则可以成功安装。 通过brew list可查看当前的安装文件  

    2024年02月16日
    浏览(50)
  • Centos升级docker后启动容器报错“unknown or invalid runtime name”

    操作系统为centos docker原来的版本为1.31.1,升级后为20 结尾有升级docker的教程 听说图片能凑字数,就截图贴了 重装docker之后试试这个,折腾一上午 https://blog.csdn.net/weixin_43448598/article/details/109412104 我是分割线 加入后面出现无法强制删除镜像文件时,或者报错(无法创建容器)

    2024年02月07日
    浏览(52)
  • 已解决: Go Error: panic: runtime error: invalid memory address or nil pointer dereference

    🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🐅🐾 猫头虎建议程序员必备技术栈一览表📖 : 云原生技术 Cloud Native : 🔥 Golang 🐳 Docker ☸️ Kubernetes ⛵ Helm 🔥 Serverless 🌩️ AWS Lambda ☁️ Google Cloud Functions 📦 Microservices 🚀 Envoy 🌐 Istio 📊 Prometheus 🦄 博客首页 : 🐅🐾

    2024年02月04日
    浏览(47)
  • ERROR: Invalid requirement: ‘==‘ 解决python报错

    ERROR: Invalid requirement: \\\'==\\\' 错误:无效的要求: \\\'==\\\' 今天安装 selenium包时突然触发这个报错,这个错误通常出现在使用pip安装Python包时,报错的原因是需要注意的是 == 前后没有空格 ,若是加空格就会出现上述报错。 例如: 安装指定版本的 selenium比较简单,直接: 在服务器上安

    2024年02月11日
    浏览(39)
  • 解决Docker报错问题:Docker Desktop – Unexpected WSL error

         最近因为准备在NAS上通过Docker容器方式安装MYSQL,发现https://hub.docker.com网站被墙了,无法自动安装,同时又找不到靠谱的离线镜像,所以准备在Window上安装Docker,通过电脑的网络代理制作离线镜像再上传到NAS上。        在Windows下安装Docker并不是很顺利,安装完启动时

    2024年01月22日
    浏览(56)
  • Git|error invalid path 报错的解决方法

    情形 1:使用 git clone 后,拉取的文件夹中只有 .git 文件夹,其他内容均没有拉下来。使用 git status -s 命令,可以看到所有文件都显示已被删除的状态。 情形 2:本地在切换分支时,出现如下报错信息,然后分支切换失败: 代码中包含 NTFS 文件系统不支持的文件名。(源代码

    2024年02月04日
    浏览(46)
  • Docker Desktop 启动报错 Unexpected WSL error 问题解决

    🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 仓库主页: Gitee 💫 Github 💫 GitCode 💖 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请纠正! 启动 Docker Desktop 报错 Unexpected WSL error,报错完整信息如下: 以管理员身份运行 CMD ,输入 netsh wi

    2024年02月05日
    浏览(62)
  • docker 报错 error: invalid character ‘\x00‘ looking for beginning of value

    执行docker build的时候报错:error: invalid character ‘x00’ looking for beginning of value。 环境: Docker version 20.10.17, build 100c701 windows docker desktop 4.10.1 WSL2 解决办法:https://github.com/docker/for-win/issues/12561 导致报错的原因是 meta.json 损坏,被写入了零值。 https://docs.docker.com/desktop/release-no

    2024年02月15日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包