查看docker中运行的JVM参数

Docker逃逸---SYS_PTRACE浅析 阅读详情

方法一、jcmd命令:

1、jps获取java的线程id

2、jcmd pid VM.flags获取

51152:
-XX:CICompilerCount=3 -XX:InitialHeapSize=526385152 -XX:MaxHeapSize=1073741824 -XX:MaxNewSize=357564416 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=175112192 -XX:OldSize=351272960 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC 

但是以上命令查询的结果不全

方法二、jinfo命令:

jinfo -flag pid

在docker中使用此命令后报错:

Attaching to process ID 1, please wait...
Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process: ptrace(PTRACE_ATTACH, ..) failed for 1: Operation not permitted
sun.jvm.hotspot.debugger.DebuggerException: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process: ptrace(PTRACE_ATTACH, ..) failed for 1: Operation not permitted
        at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal$LinuxDebuggerLocalWorkerThread.execute(LinuxDebuggerLocal.java:163)
        at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.attach(LinuxDebuggerLocal.java:278)
        at sun.jvm.hotspot.HotSpotAgent.attachDebugger(HotSpotAgent.java:671)
        at sun.jvm.hotspot.HotSpotAgent.setupDebuggerLinux(HotSpotAgent.java:611)
        at sun.jvm.hotspot.HotSpotAgent.setupDebugger(HotSpotAgent.java:337)
        at sun.jvm.hotspot.HotSpotAgent.go(HotSpotAgent.java:304)
        at sun.jvm.hotspot.HotSpotAgent.attach(HotSpotAgent.java:140)
        at sun.jvm.hotspot.tools.Tool.start(Tool.java:185)
        at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118)
        at sun.jvm.hotspot.tools.JInfo.main(JInfo.java:138)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at sun.tools.jinfo.JInfo.runTool(JInfo.java:108)
        at sun.tools.jinfo.JInfo.main(JInfo.java:76)
Caused by: sun.jvm.hotspot.debugger.DebuggerException: Can't attach to the process: ptrace(PTRACE_ATTACH, ..) failed for 1: Operation not permitted
        at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.attach0(Native Method)
        at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal.access$100(LinuxDebuggerLocal.java:62)
        at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal$1AttachTask.doit(LinuxDebuggerLocal.java:269)
        at sun.jvm.hotspot.debugger.linux.LinuxDebuggerLocal$LinuxDebuggerLocalWorkerThread.run(LinuxDebuggerLocal.java:138)

解决方法:

这其实不是什么 Bug,而是 Docker 自 1.10 版本开始加入的安全特性。

类似于 jmap 这些 JDK 工具依赖于 Linux 的 PTRACE_ATTACH,而是 Docker 自 1.10 在默认的 seccomp 配置文件中禁用了 ptrace。

这篇文章介绍了整个的缘由以及应对方法:JVM in Docker and PTRACE_ATTACH

主要提及三种:

1.1 –security-opt seccomp=unconfined
简单暴力(不推荐),直接关闭 seccomp 配置。用法:

docker run --security-opt seccomp:unconfined ...


1.2 –cap-add=SYS_PTRACE
使用 --cap-add 明确添加指定功能:

docker run --cap-add=SYS_PTRACE ...


1.3 Docker Compose 的支持
Docker Compose 自 version 1.1.0 (2015-02-25) 起支持 cap_add。官方文档:cap_add, cap_drop。用法:

前面的 docker-compose.yml 改写后文件内容如下(相同内容部分就不重复贴了):

version: '2'

services:
  mysql:
    ...
  api:
    ...
    cap_add:
      - SYS_PTRACE

解决问题后使用命令:

Attaching to process ID 1, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.202-b08
Non-default VM flags: -XX:CICompilerCount=3 -XX:InitialHeapSize=262144000 -XX:MaxHeapSize=268435456 -XX:MaxNewSize=89128960 -XX:MinHeapDeltaBytes=524288 -XX:NewSize=87031808 -XX:OldSize=175112192 -XX:ThreadStackSize=256 -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseParallelGC 
Command line:  -Dlog4j2.formatMsgNoLookups=true -Xmx256m -Xss256k -Djava.security.egd=file:/dev/./urandom

Linux下jmap工具出现sun.jvm.hotspot.debugger.DebuggerException解决方法 参照连接 https://stackoverflow.com/questions/2913948/jmap-cant-connect-to-make-a-dump 1 问题描述 Attaching to process ID 12499, please wait... Error attaching to process: sun.jvm.hotspot.debugger.DebuggerEx... 阅读详情

相关推荐

[Java][性能]Java性能分析汇总

Jvisualvm 四个面板简介: 概述:JVM参数和系统属性 监视 线程:线程dump 抽样器:快照、调用树、热点 Jvisualvm使用方式 Btrace 1.拷贝安装包btrace-bin-xxx.tgz到一个目录 2.解压:tar zxvf btrace-bin-xxx.tgz 3.监控脚本myfile放在btrace/bin目录下 4.修改脚本的属主和属组跟被监控JVM进程一致:sudo...

wsjtwmy的博客 845

了解下常用分析JVM参数以及优化工具

jvm jstat使用

程序员路同学 1128

Docker和JVM应用OOM那些事

Java 应用运行过程中你是否遇到以下类似问题为什么 Java 应用所在的 Docker 容器内存使用量不会减少?发生 OOM 后程序还能运行吗?Java 应用所在的容器为什么宕机或者自动重启了?三个问题有一定关联性,在回答以上问题前,我们先了解下“OOM”和“JVM 内存管理”。

u010554324的博客 3674

使用docker run --cap-add参数解决权限问题(无法使用gdb调试、无法date -s修改时间)

问题 在docker容器中的centos无法使用gdb调试 ptrace: Operation not permitted 解决方法 参考:https://stackoverflow.com/questions/42029834/gdb-in-docker-container-returns-ptrace-operation-not-permitted 在docker run 命令中...

liuqiuyuewo的博客 2万+

FPGA实战:手把手教你用Verilog实现Modbus CRC16校验(附完整代码)

本文详细介绍了在FPGA中实现Modbus RTU协议CRC16校验模块的完整实战方案。针对硬件设计中的时序、资源与性能挑战,文章从算法原理出发,提供了清晰的Verilog模块接口、状态机设计、查表ROM实现及优化策略,并附带了完整的可综合代码与测试平台,帮助工程师高效构建稳定可靠的工业通信系统。

weixin_29164185的博客 429

从零构建智慧农业监测终端:STM32数据采集与LoRa组网实战

本文详细介绍了如何从零构建智慧农业监测终端,涵盖STM32数据采集与LoRa组网实战。通过DHT22温湿度传感器和YL-69土壤湿度传感器实现精准环境监测,结合LoRa无线传输技术解决偏远农田信号问题。文章还分享了硬件选型、电路设计、低功耗优化及Flutter跨平台应用开发等关键技巧,助力农业智能化升级。

weixin_29172963的博客 354

docker run:–security-opt seccomp=unconfined选项解析 (安全计算模式Secure Computing Mode,实现系统调用过滤,禁用或允许某些系统调用)

Seccomp,即安全计算模式,是 Linux 内核的一部分,用于限制进程可以使用的系统调用2。通过禁止或限制对某些系统调用的访问,Seccomp 可以有效减少攻击者能够利用的攻击面。Docker 在默认情况下启用了 Seccomp,并提供了一个默认的配置文件,该文件白名单了大约300个系统调用,其他的则被禁止。这意味着在 Docker 容器中运行的进程只能访问这些已经过滤的系统调用。总的来说,Docker 的选项是一个强大的工具,可以提供更大的灵活性。

Dontla的博客 9252

ASP.NET Core Identity + Mysql(实战一)——注册登陆

在进行实战之前,我们先来了解一下Identity。 ASP.NET Core Identity是用于构建ASP.NET Core Web应用程序的成员资格系统,包括成员资格、登录和用户数据存储。简单的来讲包括: 1.用户数据存储(使用任意你喜欢的关系型数据库,从sqllite到mysql、sqlserver等等,由Entity Framwork 支持) 2.登陆、注册外加身份认证(基于coo...

weixin_40359716的博客 1395

使用docker安装nacos2.0,解决nacos-logback.xml (No such file or directory)

使用docker安装nacos2.0,解决nacos-logback.xml (No such file or directory)

轻夏的博客 9778

【可信数据空间-部署方案】

此部署架构体现了以下几个核心原则:去中心化: 数据存储和处理完全分布在各个参与者端,运营方只提供核心的协调和信任基础设施。安全边界清晰: 通过VPC、DMZ、防火墙、K8s命名空间等技术,在每个层级都建立了严格的安全边界。高可用与弹性: 所有关键服务均以集群方式部署,避免单点故障,并能根据负载动态伸缩。云原生: 全面采用容器化和Kubernetes编排,简化部署、管理和运维复杂度。合规性: 架构设计天然满足数据驻留要求(数据留在企业本地),并为所有操作提供不可篡改的审计追踪能力。

u014716614的博客 765

全国大学校园网—拓扑图欣赏

全国大学网络拓扑图(一百张) 典型十张 1、 中央财经大学 2、国防科技大学 3、济南大学 4、西安石油大学 5、南通大学IPV6网络 6、中国矿业大学 7、青海师范大学 8、内蒙古科技大学 9、三峡大学 10、中共江苏省党校 剩余90张 点赞、评论获取 ...

LiBai'S BLOG 5万+

Ubuntu22.04在docker下安装Nacos

本文介绍了如何在Ubuntu22.04下的docker里安装Nacos

驴大毛的博客 905

YOLO26优化:特征融合 | 一种新颖的多尺度特征融合iAFF,适配小目标检测

在YOLO26中如何使用:iAFF加入Neck替代Concat;

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 251

idea使用docker进行远程调试

idea远程调试docker容器内的服务

qq_44773121的博客 182

毕设加分项!手把手教你完成基于YOLOv8与PyQt5的多类别目标检测系统——让你的毕设从“完成”到“出色”

从KITTI数据集处理,到YOLOv8模型训练,再到PyQt5界面开发,整个流程其实没有想象中那么难。只要你跟着步骤一步步来,不仅能顺利完成毕设,还能掌握目标检测和GUI开发的核心技能——这些技能在未来的求职、读研中都非常实用。如果过程中遇到问题,别担心!可以去YOLOv8的官方文档、PyQt5论坛找答案,也可以和同学、老师交流。记住,完成毕设的过程也是你技术成长的过程,坚持下去,你会为自己的成果感到自豪。

m0_71589036的博客 175

Open3D 可视化(1)——简单可视化【2026最新版】

简单可视化,博客长期更新,本文最新更新时间为:2026年5月10日。

点云侠的博客 5674

docker使用arthas基本教程

docker arthas

qq_38526245的博客 827

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Docker部署java项目,基于Dockerfile文件构建镜像

部署java项目,基于dockerfile构建docker镜像,打包环境,以及进入容器内部dump jvm日志

weixin_44029834的博客 2890

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

JVM-常见JVM参数、如何查看JVM参数、如何动态设置JVM参数

1 JVM参数 1.1 标准参数 // 查看java版本 -version // help命令就不用了说了吧 -help // -server // 指定类运行所依赖其他类的路径,通常是类库和jar包,需要全路径到jar包,多个jar包之间连接符, // window上分号“;”.Linux下使用“:” -cp 1.2 -x参数 非标准参数,也就是在JDK各个版本中可能会变动 -Xi...

抠脚的汉子 2604

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

docker启动服务怎么加jvm参数

我整理的一些关于【Docker】的项目学习资料(附讲解~~)和大家一起分享、学习一下:https://edu.51cto.com/surl=QsXoR2Docker启动服务如何加JVM参数 在容器化应用逐渐普及的今天,Docker已经成为我们日常开发和部署中不可或缺的工具。很多Java应用都是运行在JVM(Java虚拟机...

weixin_41535887的博客 1838

使用docker-compose,调整JVM参数

场景: 服务器配置比较低,导致部署在docker里的微服务不能完全启动,就想调整下jvm参数优化下,又因为启动容器用的是docker-compose,网上很多直接用docker run 调整JVM参数的方法不能用,参考多篇文章后总结一个适用docker-compose的完整方法。 方法: 1. Dokerfile里添加 ENV JAVA_OPTS="",如下: RUN mkdir -p /test WORKDIR /test ADD ./target/test.jar ./test.jar ENV

y_onghuming的博客 1万+

docker容器化下的JVM参数调优

docker容器化下的JVM参数调优. 1、JVM堆内存设置 2、GC日志打印以及OOM自动dump

u012809308的博客 7820

调整JVM参数的方式

调整JVM参数的方式取决于你的运行环境。无论是命令行、IDE、应用服务器、Spring Boot、Docker还是Kubernetes,都可以通过配置相应的参数来优化JVM性能。注:改文章只整理了大多数运行环境调参方式。如果需要了解如何调参可参考(

hsisbsjskknxbs的博客 2466
上一篇: elasticsearch学习DSL查询
下一篇: byte转16进制
xiaoniuxqq
博客等级 码龄13年 97粉丝 248原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值