SpringBoot2应用在Docker容器中异常退出(Exited 139)是什么原因?

springboot2应用在docker容器中异常退出(exited 139)是什么原因?

排查 Spring Boot 2 应用在 Docker 容器中异常退出的问题 (Exited 139)

本文分析 Spring Boot 2 应用在 Docker 容器中异常停止,并提供解决方案。 问题表现为容器状态显示为 Exited (139),日志包含 SIGILL (0x4) 错误,以及指向 libawt.so 的错误信息。

根据提供的 Dockerfile、docker-compose 文件和日志,问题可能源于图形验证码库和基础镜像的依赖缺失。 应用使用了需要 Java AWT 库的图形验证码库,而 openjdk:8-jdk-alpine 镜像精简,缺失 libawt_xawt.so 等 AWT 库文件。 虽然已安装字体库,但仍未解决 AWT 库缺失问题。 ldd 命令也证实了 libawt_xawt.so 缺失。 AWT 库缺失导致图形化操作时出现 SIGILL (非法指令) 异常,最终导致容器退出。

虽然 Exited (139) 也可能与内存不足等有关,但结合 libawt.so 错误信息,更可能是依赖库缺失导致程序崩溃。 服务器内存充足,内存不足可能性较小。

建议尝试以下方法:

更换基础镜像: 使用包含完整 AWT 支持的镜像,例如基于 Debian 或 CentOS 的 OpenJDK 镜像,直接解决 AWT 库缺失。

因赛AIGC 因赛AIGC

因赛AIGC解决营销全链路应用场景

因赛AIGC 73 查看详情 因赛AIGC

安装图形库: 如果必须使用 openjdk:8-jdk-alpine,则需在 Dockerfile 中安装 xorg-x11-utils (或等效包) 等图形库,提供 AWT 运行环境。 需仔细检查 AWT 的依赖关系,确保安装所有必要库文件。

分析 hs_err_pid1.log: 该文件包含 JVM 崩溃的详细信息,提供更准确的错误原因。

精简或禁用图形验证码: 考虑使用无需 AWT 的图形验证码库,或在生产环境中禁用图形验证码功能。 这是一种权宜之计,需根据实际情况权衡。

解决问题的关键在于确保容器内的 Java 环境拥有完整的 AWT 支持。

以上就是SpringBoot2应用在Docker容器中异常退出(Exited 139)是什么原因?的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/270316.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
淘宝扣了24分2年后号能正常吗?被扣24分有什么后果呢?淘宝扣24分2年后能恢复?后果比想象更严重!3招教你紧急补救!
上一篇 2026年10月14日 07:14:46
找出数组中最长的连续相等元素序列
下一篇 2025年12月20日 17:14:32

相关推荐

  • docker怎么安装mysql

    docker怎么安装mysqldocker怎么安装mysqldocker怎么安装mysqldocker怎么安装mysql

    1、使用 docker 命令下载 mysql docker pull mysql:5.7 5.7是版本号,可以去https://hub.docker.com/_/mysql?tab=tags 网站查询想要安装的 mysql 版本; 2、使用 docker 命令创建实例并启动; docker run …

    2026年10月14日 • 用户投稿
    300
  • Multi-SWE-bench— 字节豆包开源的多语言代码修复基准

    multi-swe-bench:字节跳动开源的多语言代码修复基准 Multi-SWE-bench是字节跳动豆包大模型团队开源的首个多语言代码修复基准数据集,它在SWE-bench的基础上,扩展支持了Java、TypeScript、JavaScript、Go、Rust、C和C++七种主流编程语言,实现…

    2026年10月14日
    100
  • 怎么使用Docker-compose部署mysql

    一、Docker-compose简介 重新表述:对于大多数人来说,容器编排工具最主要的作用可能是作为启动容器的脚本。它可以实现一次性启动多个容器,它的自动重启容器策略也很好用。 二、部署步骤 1. 在/root 目录下新建目录docker-compose,在/root/docker-compose目…

    2026年10月14日
    200
  • MoLing— 本地AI办公自动化助手,基于 MCP 服务器

    MoLing— 本地AI办公自动化助手,基于 MCP 服务器MoLing— 本地AI办公自动化助手,基于 MCP 服务器MoLing— 本地AI办公自动化助手,基于 MCP 服务器MoLing— 本地AI办公自动化助手,基于 MCP 服务器

    moling:您的本地办公自动化助手 MoLing是一款无需依赖任何外部环境的本地办公自动化工具,基于计算机和浏览器运行,并作为独立的MCP服务器工作。它通过操作系统API与系统进行交互,支持各种文件系统操作(读取、写入、合并、统计、聚合)以及系统命令执行。MoLing兼容Windows、Linux…

    2026年10月14日 • 用户投稿
    200
  • 二、容器基本概念

    容器与镜像的概念及其应用在现代计算环境中扮演着重要角色。以下是对容器和镜像的详细介绍。 什么是容器? 在操作系统中,进程之间可以相互看到、相互通信;它们使用相同的文件系统,可以对同一文件进行读写操作,并且共享系统资源。然而,这样的设置也存在一些问题: 进程可能会被其他进程影响,高级权限的进程甚至可以…

    2026年10月14日
    100
  • 如何通过脚本批量管理系统更新策略?

    批量管理系统更新需基于操作系统选择合适工具:Windows用PowerShell或组策略,Linux用Bash/Python结合Ansible等工具;关键考量包括环境、团队技能、基础设施整合及策略复杂度;部署时面临认证、网络、版本差异等挑战,应通过密钥认证、重试机制、版本适配应对;安全性方面须遵循最…

    2026年10月13日
    200
  • Docker容器怎么迁移Oracle到MySQL

    Docker容器怎么迁移Oracle到MySQLDocker容器怎么迁移Oracle到MySQLDocker容器怎么迁移Oracle到MySQLDocker容器怎么迁移Oracle到MySQL

    ⛳️ 1. 创建专用网络 docker network create –subnet=168.66.6.0/24 db-network[root@docker ~]# docker network inspect db-network –查看网络信息 ⛳️ 2. Oracle 12C部署 ✨ 2…

    2026年10月13日 • 用户投稿
    400
  • docker安装mysql的方法是什么

    docker安装mysql的方法是什么docker安装mysql的方法是什么docker安装mysql的方法是什么docker安装mysql的方法是什么

    快速完成 直接复制粘贴跟着做即可快速完成,可以不用查看详细步骤 docker pull mysql:5.7 docker run -d -p 3306:3306 –privileged=true -v /usr/local/mysql/log:/var/log/mysql -v /usr/loca…

    2026年10月13日 • 用户投稿
    200
  • Docker数据卷挂载路径找不到怎么办?

    Docker数据卷挂载路径找不到怎么办?Docker数据卷挂载路径找不到怎么办?Docker数据卷挂载路径找不到怎么办?Docker数据卷挂载路径找不到怎么办?

    Docker数据卷挂载路径疑难解答 在使用Docker容器时,数据卷是持久化存储数据的关键。然而,有时我们会遇到数据卷挂载路径找不到的棘手问题,导致容器无法正常运行或访问数据。本文将分析一个典型案例,并提供有效的解决方案。 问题: 用户尝试运行以下命令启动一个Nginx容器,并挂载名为html的数据…

    2026年10月13日 • 用户投稿
    100
  • VSCode如何通过容器开发环境隔离项目依赖 VSCode开发容器隔离多项目环境的配置指南

    VSCode如何通过容器开发环境隔离项目依赖 VSCode开发容器隔离多项目环境的配置指南VSCode如何通过容器开发环境隔离项目依赖 VSCode开发容器隔离多项目环境的配置指南VSCode如何通过容器开发环境隔离项目依赖 VSCode开发容器隔离多项目环境的配置指南VSCode如何通过容器开发环境隔离项目依赖 VSCode开发容器隔离多项目环境的配置指南

    使用 vs code 开发容器可有效隔离项目依赖并保证环境一致性,具体配置方法为:1. 为每个项目创建独立的 .devcontainer 文件夹并配置 devcontainer.json;2. 在文件中指定容器名称、基础镜像、所需特性(如 python 或 node.js 版本);3. 配置端口转发…

    2026年10月13日 • 用户投稿
    100
  • Swoole的Task任务执行失败了怎么办

    Swoole的Task任务执行失败了怎么办Swoole的Task任务执行失败了怎么办Swoole的Task任务执行失败了怎么办Swoole的Task任务执行失败了怎么办

    答案:应系统性排查Swoole Task失败原因并采取对应措施。首先在onTask中使用try-catch捕获异常并记录日志;确认task_worker_num大于0且回调已定义,通过返回值判断任务投递是否成功;检查PHP与Swoole日志,排除资源不足或限制问题;最后通过持久化队列、失败重试和监控…

    2026年10月13日 • 用户投稿
    800
  • centos关机命令是什么

    centos关机命令是什么centos关机命令是什么centos关机命令是什么centos关机命令是什么

    centos关机命令:1、“halt”命令,可立刻关机;2、“poweroff”命令,可立刻关机;3、“shutdown -h now”命令,可立刻关机;4、“shutdown -h 数字”命令,可指定分钟后自动关机;5、“init 0”。 本教程操作环境:CentOS 6系统、Dell G3电脑。…

    2026年10月13日 • 用户投稿
    100
  • hive学习笔记之一:基本数据类型

    欢迎访问我的github《hive学习笔记》系列导航,涵盖了基本数据类型、复杂数据类型、内部表和外部表、分区表、分桶表、hiveql基础、内置函数、sqoop基础、用户自定义函数(udf)、用户自定义聚合函数(udaf)和用户自定义表生成函数(udtf)等内容。《hive学习笔记》系列秉承作者一贯的…

    2026年10月13日
    100
  • LINUX磁盘空间满了怎么清理_LINUX磁盘空间清理实用指南

    LINUX磁盘空间满了怎么清理_LINUX磁盘空间清理实用指南LINUX磁盘空间满了怎么清理_LINUX磁盘空间清理实用指南LINUX磁盘空间满了怎么清理_LINUX磁盘空间清理实用指南LINUX磁盘空间满了怎么清理_LINUX磁盘空间清理实用指南

    首先检查磁盘使用情况,使用df -h和df -i命令定位高占用分区或inode耗尽问题;接着通过du -sh和find命令查找大文件及高占用目录;然后清理系统日志、软件包缓存、临时文件,处理已删除但未释放的文件句柄,并清除Docker残留资源以释放空间。 如果您的LINUX系统提示磁盘空间已满,可能…

    2026年10月13日 • 用户投稿
    000
  • 如何在SpringCloud微服务项目中实现覆盖Docker和Kubernetes的OTA升级?

    如何在SpringCloud微服务项目中实现覆盖Docker和Kubernetes的OTA升级?如何在SpringCloud微服务项目中实现覆盖Docker和Kubernetes的OTA升级?如何在SpringCloud微服务项目中实现覆盖Docker和Kubernetes的OTA升级?如何在SpringCloud微服务项目中实现覆盖Docker和Kubernetes的OTA升级?

    在springcloud微服务项目中实现覆盖docker和kubernetes的ota升级是否可行?这个需求虽然看似复杂,但从技术角度来看,是可以实现的。老板提出的要求是希望在各种环境下能够平滑升级、随时回滚并支持灰度发布,这确实是一个具有挑战性的任务。 首先,Docker和Kubernetes本身…

    2026年10月13日 • 用户投稿
    100
  • docker mysql容器怎么开启慢查询日志

    docker mysql容器怎么开启慢查询日志docker mysql容器怎么开启慢查询日志docker mysql容器怎么开启慢查询日志docker mysql容器怎么开启慢查询日志

    1、进入容器 登陆账号 docker 查看 运行的容器 docker ps 进入容器: docker exec -it dc8880c13fef /bin/bash 输入用户名密码登陆mysql mysql -u root -p 然后输入密码登陆进去 2、查看慢日志相关信息 默认慢日志是关闭的。sh…

    2026年10月13日 • 用户投稿
    100
  • java成品网站源码大全2025 最新java成品网站在线观看汇总

    java成品网站源码大全2025 最新java成品网站在线观看汇总java成品网站源码大全2025 最新java成品网站在线观看汇总java成品网站源码大全2025 最新java成品网站在线观看汇总java成品网站源码大全2025 最新java成品网站在线观看汇总

    在当今的互联网时代,网站的开发和部署变得越来越重要。Java作为一种广泛使用的编程语言,因其稳定性和可扩展性而备受开发者青睐。2025年,Java成品网站源码的需求持续增长,许多开发者和企业希望能够快速获取并部署这些源码,以满足其业务需求。本文将详细介绍如何获取Java成品网站源码入口,并提供在线观…

    2026年10月13日 • 用户投稿
    100
  • CentOS上如何安装搭建PHP+Apache+Mysql的服务器环境

    CentOS上如何安装搭建PHP+Apache+Mysql的服务器环境CentOS上如何安装搭建PHP+Apache+Mysql的服务器环境CentOS上如何安装搭建PHP+Apache+Mysql的服务器环境CentOS上如何安装搭建PHP+Apache+Mysql的服务器环境

    一:安装mysql 1.安装 yum install mysql mysql-server mysql-devel 2.启动 mysql /etc/init.d/mysqld start 3.设置mysql初始密码(mysql安装完成后默认为无密码,未设置密码之前启动mysql会出现警告信息) 密码…

    2026年10月13日 • 用户投稿
    100
  • Composer如何处理PHP扩展依赖_声明项目所需的PHP-ext模块

    Composer如何处理PHP扩展依赖_声明项目所需的PHP-ext模块Composer如何处理PHP扩展依赖_声明项目所需的PHP-ext模块Composer如何处理PHP扩展依赖_声明项目所需的PHP-ext模块Composer如何处理PHP扩展依赖_声明项目所需的PHP-ext模块

    Composer通过声明PHP扩展依赖确保环境一致性,其在安装或更新时检查扩展是否启用,避免部署问题。 Composer本身并不直接安装PHP扩展,它主要扮演的是一个“环境守卫者”的角色。当你声明了项目所需的PHP扩展模块时,Composer会在你运行 composer install 或 comp…

    2026年10月12日 • 用户投稿
    100
  • Codex CLI— OpenAI 开源的AI编程智能体

    Codex CLI— OpenAI 开源的AI编程智能体Codex CLI— OpenAI 开源的AI编程智能体Codex CLI— OpenAI 开源的AI编程智能体Codex CLI— OpenAI 开源的AI编程智能体

    Codex CLI 是什么 codex cli 是由 openai 推出的一款轻量级的 ai 编程助手。它利用自然语言指令帮助开发者高效地生成代码、执行文件操作以及进行版本控制。codex cli 支持代码生成、重构、测试、数据库迁移和文件批量操作等功能。该工具专为在终端工作的开发者设计,支持无需配…

    2026年10月12日 • 用户投稿
    100

发表回复

登录后才能评论
关注微信