基于alpine java的docker容器查看堆栈信息
一、问题分析
使用docker容器起服务,容器是基于openjdk:8-jre-alpine的,里面没有没有相关的内存分析工具,如jmap,jstack等
解决参考文档:
https://www.codeleading.com/article/40862545024/
二、问题解决
2.1、容器安装openjdk8
#进入容器 [root@ZSC ~]#docker exec -it 931c5b99fa53 /bin/sh #修改源,加入阿里源 / # cat /etc/apk/repositories http://dl-cdn.alpinelinux.org/alpine/v3.9/main http://dl-cdn.alpinelinux.org/alpine/v3.9/community http://mirrors.aliyun.com/alpine/v3.9/main/ http://mirrors.aliyun.com/alpine/v3.9/community/ #更新 / # apk update fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz fetch http://mirrors.aliyun.com/alpine/v3.9/main/x86_64/APKINDEX.tar.gz fetch http://mirrors.aliyun.com/alpine/v3.9/community/x86_64/APKINDEX.tar.gz v3.9.6-44-g3992359a2b [http://dl-cdn.alpinelinux.org/alpine/v3.9/main] v3.9.6-45-g39af6011bf [http://dl-cdn.alpinelinux.org/alpine/v3.9/community] v3.9.6-44-g3992359a2b [http://mirrors.aliyun.com/alpine/v3.9/main/] v3.9.6-42-g88b6599af0 [http://mirrors.aliyun.com/alpine/v3.9/community/] OK: 9790 distinct packages available #安装openjdk8(很慢) / # apk add openjdk8 #查看安装的位置,后续可以考虑将其移出容器 /usr/lib/jvm/java-1.8-openjdk # pwd /usr/lib/jvm/java-1.8-openjdk /usr/lib/jvm/java-1.8-openjdk # ls ASSEMBLY_EXCEPTION LICENSE THIRD_PARTY_README bin include jre lib release
2.2、pid问题解决
由于进程占用pid为1,所以无法使用jmap等工具
解决方法:
1)docker --init启动
#可以将openjdk拷贝出来,然后容器启动后,拷贝进容器 [root@ZSC ~]#docker run --init -d -p 20889:20889 dianchou-service-address:1.0-SNAPSHOT 72bca3bb7bd222b782eff7eec426818dbf3482685adb22c48f06aaf69bd1525b [root@ZSC service]#docker cp java-1.8-openjdk 72bca3bb7bd2:/
2)docker-compose配置文件添加参数
作者:Lawrence
-------------------------------------------
个性签名:独学而无友,则孤陋而寡闻。做一个灵魂有趣的人!
扫描上面二维码关注我
如果你真心觉得文章写得不错,而且对你有所帮助,那就不妨帮忙“推荐"一下,您的“推荐”和”打赏“将是我最大的写作动力!
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接.