Docker容器中启动Arthas异常

2023-11-07

使用Docker容器部署spring boot项目
Dockerfile文件内容如下

FROM openjdk:8-jre-alpine

#第一步将apk源替换为国内阿里源。没有第一步将下载难产
RUN echo -e 'https://mirrors.aliyun.com/alpine/v3.6/main/\nhttps://mirrors.aliyun.com/alpine/v3.6/community/' > /etc/apk/repositories \
    && set -xe \
    && apk --no-cache add ttf-dejavu fontconfig

#创建文件夹
RUN mkdir -p /work

WORKDIR /work

ARG JAR_FILE=app.jar

COPY ${JAR_FILE} app.jar

EXPOSE 80

ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom"

CMD java -jar app.jar $JAVA_OPTS

使用build命令生成镜像并运行

docker build -t app .
docker run -d -p 8080:8080 --name app app

在Docker容器启动Arthas

docker exec -it a05430507a7d /bin/sh
wget https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar

遇到问题:Can not find java process. Try to run jps command lists the instrumented Java HotSpot VMs on the target system.
jre-alpine默认没有安装jps,无法通过jps查找java进程

直接指定进程号:
java -jar arthas-boot.jar 1
再次遇到问题:Exception in thread "main" java.lang.IllegalArgumentException: Can not find tools.jar under java home: /usr/lib/jvm/java-1.8-openjdk/jre, please try to start arthas-boot with full path java. Such as /opt/jdk/bin/java -jar arthas-boot.jar
因为jre-alpine中没有tools.jar文件

找一个linux版本java中的tools.jar文件,拷贝到容器中
docker cp /data/tools.jar ac69a820acf6d71://usr/lib/jvm/java-1.8-openjdk/lib

再次启动arthas
java -jar arthas-boot.jar 1
遇到问题:com.sun.tools.attach.AttachNotSupportedException: Unable to get pid of LinuxThreads manager thread
因为Docker与Open JDK之间存在bug,java应用做为进程pid值为1时,会出现这个问题

解决方式:

  1. 在Dockerfile中引入tini,由它管理进程
ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx256m -Djava.security.egd=file:/dev/./urandom"

RUN apk --update --no-cache add tini
ENTRYPOINT ["tini"]

CMD java -jar app.jar $JAVA_OPTS
  1. 从linux版本的jre/lib中,拷贝tools.jar到容器中
docker build -t app .
docker run -d -p 8080:8080 --name app app

docker exec -it a05430507a7d /bin/sh
wget https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar

docker cp /data/tools.jar ac69a820acf6d71://usr/lib/jvm/java-1.8-openjdk/lib
docker exec -it ac69a820acf6d71 /bin/sh
wget https://arthas.aliyun.com/arthas-boot.jar
java -jar arthas-boot.jar

相关文章:
Alpine镜像中执行jstack、arthas等命令提示Unable to get pid of LinuxThreads manager thread
在Docker中使用Arthas诊断
在docker中使用arthas

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker容器中启动Arthas异常 的相关文章

  • 将 GAE/J 上的 pdfjet 生成的 PDF 文件上传到 Google Docs

    我需要将 PDF 文件上传到用户谷歌文档 该文件是由谷歌应用引擎上的 pdfjet 生成的 我想出使用 pdfjet for gae j 生成 pdf pdfjet 使用流来创建 pdf 无论如何 是否可以将流转换为文件 以便我可以上传给用
  • 如何在Android中将文件转换为base64(如.pdf、.text)?

    如何将 SD 卡文档 pdf txt 转换为 Base 64 字符串并将字符串发送到服务器 这个方法对我有用 String encodeFileToBase64Binary encodeFileToBase64Binary yourFile
  • 添加@Named时@SessionScoped不起作用

    考虑以下支持 bean import javax faces bean ManagedBean import javax faces bean SessionScoped ManagedBean SessionScoped public c
  • 在 Java 中将日期从 UTC 转换为 PST

    我需要将日期从 Google App Engine 本地服务器时区转换为 Java 中的太平洋时间 我尝试使用 Calendar calstart Calendar getInstance calstart setTimeZone Time
  • spring-data-neo4j 基本一对多关系不持久

    EDIT 示例项目可在github https github com troig neo4jCustomRepository 我在后端项目中使用 Neo4J Rest 图形数据库 托管在 grapheneDb 中 和 Spring Data
  • Eclipse 调试“未找到源”

    我刚刚开始使用 Eclipse 所以慢慢来吧 但是 当尝试调试 JUnit 测试用例时 我会收到一个对话框 指出当我在测试方法中的代码中找到此行时 未找到源代码 Assert assertEquals 1 contents size 我知道
  • Spring JSON序列化、Gson反序列化

    我目前在某些内部对象的反序列化方面遇到问题 在春天 我在使用输出之前初始化所有对象 ResponseBody 例如 这是一个响应 id 1 location id 1 extra location data id 2 location 1
  • Java中单击和双击的区别

    我搜索论坛并看到以下代码 public void mouseClicked MouseEvent e if e getClickCount 2 System out println and it s a double click wasDo
  • 使用 Jquery Ajax 将数据从 jsp 发送到 struts2 操作类

    我需要使用 jquery Ajax 将表单数据从 jsp 传递到 struts2 并从 Struts2 操作类接收回 JSON 数据 我已经给出了下面的代码 当我传递 AJAX 数据时 url search action searchTex
  • 阻止 GWT 中的事件冒泡

    我有以下代码片段 changeTextArea 是一个 TextArea 对象 changeTextArea addKeyboardListener new KeyboardListenerAdapter public void onKey
  • 如何在 jax-ws 客户端中隐藏(可能)由 jax-ws 库引起的警告

    我正在使用 netbeans 在我的应用程序中生成 Web 服务客户端 我的程序使用 jax ws 库来设置调用 Web 服务的超时 出现问题是因为每当我启动这个程序时它都会生成很多这样的警告消息 2010 年 12 月 13 日下午 4
  • Windows:如何获取所有可见窗口的列表?

    无论如何都要使用相关技术重新标记 我不知道它们是什么 稍后我可能会提出更详细的问题 关于具体细节 但现在我正在尝试掌握 大局 我正在寻找一种方法来枚举 Windows 上的 真实可见窗口 我所说的 真正可见的窗口 就是指 用户所说的 窗口
  • Java编译错误:包不存在

    在我的工作区 wsPrivate 中 我有 3 个 gradle 项目 刽子手 像素视图 Reports PixelView 和 Reports 项目编译良好 然而 Hangman 使用这两个项目 并且有些在编译时找不到包 请参阅以下错误
  • 计算事件之间的天数 - Android

    我一直在研究 Android API 并一直在寻找一种方法来计算当前日期和未来日期之间的天数 我对 android 还很陌生 而且我已经有几年没有做过 java 了 计算这个最简单的方法是什么 Thanks 最简单的方法是使用乔达时间 ht
  • JPA中如何连接多个数据库?

    我有一个 Spring Boot 应用程序 当前使用 JPA 连接到单个数据库 application properties 文件中的连接详细信息 spring datasource url jdbc oracle thin localho
  • SSLHandShakeException 没有适当的协议

    我最近向我的网站添加了 SSL 可以通过 https 访问它 现在 当我的 java 应用程序尝试向我的网站发出请求并使用缓冲读取器从中读取时 它会生成此堆栈跟踪 我没有使用自签名证书 该证书来自 Namecheap 它使用 COMODO
  • 如何使用 log4j2.xml 配置 hibernate 日志记录?

    我最近切换到 Apache log4j2 但仍然找不到使用 log4j2 xml 配置 hibernate 日志记录的方法 因为我找不到解决此问题的方法 所以我仍然显式使用 log4j properties 文件进行休眠 这不是最好的解决方
  • 如何使用 Java 1.4 和 SAX 将任意数据编码为 XML?

    我们使用 SAX 来解析 XML 因为它不需要将整个 XML 文档读入内存来解析单个值 我读过很多文章 坚持认为 SAX 只能用于解析 解码 XML 而不能创建它 这是真的 不 这不是真的 您可以使用类似于以下内容的方式将 XML 编码为
  • 根据另一个列表的顺序对列表进行排序[重复]

    这个问题在这里已经有答案了 我需要对列表进行排序Person对象 List
  • Spring Data JPA 存储库,具有规范、分页和标准 fetch-join

    我正在使用具有规范和分页功能的 Spring Data JPA 存储库实现实体列表的搜索 过滤服务 我正在尝试减少查询数量 n 1 问题 并使用条件获取机制获取嵌套数据 我有两个实体类 Entity Table name delegatio

随机推荐

  • SQL优化

    1 应尽量避免在 where 子句中使用 或 lt gt 操作符 否则将引擎放弃使用索引而进行全表扫描 2 对查询进行优化 应尽量避免全表扫描 首先应考虑在 where 及 order by 涉及的列上建立索引 3 应尽量避免在 where
  • Java 集合 (Set, TreeSet, HashSet)

    目录 1 Set 2 TreeSet 2 1 自然排序 2 2 比较器排序 2 3 两种比较方式小结 3 HashSet 3 1 哈希值 3 2 底层原理 4 小结 1 Set Set 集合特点 可以去除重复 存取顺序不一致 没有带索引的方
  • 手机快充协议

    高通 QC2 0 QC3 0 QC3 5 QC4 0 QC5 0 FCP SCP AFC SFCP MTKPE1 1 PE2 0 PE3 0 TYPEC PD2 0 PD3 0 3 1 VOOC 支持 PD3 0 PD2 0 支持 QC3
  • UML用例图的作用、功能模块图作用与数据库设计三者关系

    这周周一 我们导师要求小组成员开会 我们分别汇报自己的工作 在会中 谈到了用例图 于是我们开始对大家熟悉的用例图进行探讨 经过探讨与自己的思考 我认为应该从以下几个问题来弄清楚用例图的作用 1 用例图由谁来做 为谁做 做完了有什么用途 用例
  • Java8 stream 根据对象字段去重

    public class Java8StreamTest public static class Book private String id private String name public Book String id String
  • attention注意力机制学习

    参考资料 目前主流的attention方法都有哪些 JayLou娄杰的回答 知乎 目前主流的attention方法都有哪些 张戎的回答 知乎 Attention机制解读 高峰OUC的文章 知乎 Transformer详解 一 Attenti
  • linux:filezilla连接ubuntu失败,提示 状态:尝试连接“ECONNREFUSED - 连接被服务器拒绝”失败。

    问题 如上 解决办法 发现ping的通 说明是别的问题 可能是端口号不对 sftp与ftp是否没有区别 超级向向阳的回答 知乎 ftp和sftp有什么区别 ftp和sftp哪个速度快 贝锐花生壳官网 ps 如果是连接超时 注意是否开启了防火
  • 记一次sqlmap的--os-shell的实战

    一 站点内容获取 描述 一个后台管理界面 通常我们会尝试使用弱口令爆破 sql注入 万能密码等 在这个站点我们尝试了弱口令爆破没有成功 但尝试sql注入成功了 并且发现了一系列的struts2框架漏洞 并成功接管了站点的数据库等等 二 站点
  • 2023华为OD机试真题【统一限载最小值】【2023.Q1】

    题目描述 火车站附近的货物中转站负责将到站货物运往仓库 小明在中转站负责调度2K辆中转车 K 辆干货中转车 K 辆湿货中转车 货物由不同供货商从各地发来 各地的货物是依次进站 然后小明按照卸货顺序依次装货到中转车上 一个供货商的货只能装到一
  • 如何在 Linux 中将文件编码转换为 UTF-8

    转自 https linux cn article 7959 1 html 在这篇教程中 我们将解释字符编码的含义 然后给出一些使用命令行工具将使用某种字符编码的文件转化为另一种编码的例子 最后 我们将一起看一看如何在 Linux 下将使用
  • Supermap聚合服务

    大家好 下面呢 我们来学习supermapserver的聚合服务 我们主要学习三个方面的内容 首先呢 我们来了解一下什么是聚合服务 它的一个含义那么其次呢 我们来了解一下聚合服务的原理啊 最后呢 我们来学习一下 如何去创建 聚合服务创建聚合
  • 使用Mathjax网页插入公式

    本文关于 想在网页里面插入公式 找到了 Mathjax 这里说怎么设置 具体来说是怎么在博客园设置 以及一点点如何使用 设置方法 需要开通js的权限 进入 设置 在页脚Html代码输入
  • eggjs中使用jwt

    开发接口时需要生成token 和校验token egg jwt就是一个很不错的插件 下边就教大家如何使用 废话不多说 先看效果 开始教程 安装包 yarn add egg jwt 全局引入jwt config plugin js modul
  • 真正的小说 真正的生活 真正的蜕变 真正的品味

    记得以前曾经看过这篇文章 但是没有看完全 今天蓦然在杜的空间再次看到这 篇文章 决定再看一次 而且 很认真的看完了 感觉现在的自己跟以前又不一样了 很 多的感触只是埋在心里 慢慢消融 慢慢体味 同时慢慢成长着 从他的字里行间我看得 到他是用
  • 计算机网络八和ctf做题七

    计算机网络学习了一段时间 因为里面有很多要记住的东西 而且还有很多协议有的还比较抽象 所以学着学着发现把那些协议都搞混了 所以这篇文章将要讲一些重要协议 点对点协议 点对点协议 点对点协议简称PPP协议 工作在数据链路层 设计目的主要是用来
  • linux下查看磁盘空间

    突然系统不能使用了 可以看一下是不是磁盘占满 了 首先登录到服务器 我的是mac 直接登录 使用ssh登录ssh t root 104 224 166 36 p27988 windows系统也可以使用 xshell来登录 命令行 df df
  • Debian下安装中文包和输入法【解决无法显示中文问题】

    以前一直用的都是ubuntu 输入法之类的点点鼠标就 了 最近需要使用debian了 安装了一个桌面版 vim写代码感觉有点恶心 安装的时候全部选择英文 运行起来发现竟然无法显示中文 输入法也没找到在哪里设置 我是在虚拟机下安装的 可能会有
  • ITX-RK3588J在Ubuntu22.04上进行SDK编译与烧写

    一 SDK下载 在Window上下载好最新的SDK 并把他放拉到虚拟机里的Ubuntu22 04上 二 搭建编译环境 Firefly维基教程上 需要安装编译环境 直接使用 sudo apt get install 软件名 安装全部软件 su
  • X2000 Linux PWM

    一 硬件设计 PC04 PWM4 二 通过shell开启PWM 配置参数 cmd pwm config pc04 freq 1000 max level 100 active level 1 accuracy priority freq 启
  • Docker容器中启动Arthas异常

    使用Docker容器部署spring boot项目 Dockerfile文件内容如下 FROM openjdk 8 jre alpine 第一步将apk源替换为国内阿里源 没有第一步将下载难产 RUN echo e https mirror