基於alpine java的docker容器查看堆棧信息


一、問題分析

使用docker容器起服務,容器是基於openjdk:8-jre-alpine的,里面沒有沒有相關的內存分析工具,如jmap,jstack等

image

解決參考文檔:

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

image

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:/

image

2)docker-compose配置文件添加參數

image


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM