alpine 构建,在 k8s 中以 .Pod.Spec.shareProcessNamespace = true 启动
cat << EOF | docker build -t aliprod-reg.llsops.com/it/backend/pop:20200727-dev-alpine-glibc-1 . -f -
FROM aliprod-reg.llsops.com/it-rls/openjdk:8u212-jdk-alpine
COPY /target/pop-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]
EOF
运行 jinfo, jstack 结果...
# ps -ef
PID USER TIME COMMAND
1 root 0:00 /pause
6 root 1:06 java -XX:+UseConcMarkSweepGC -XX:InitialRAMPercentage=50.0 -XX:MinRAMPercentage=50.0 -XX:MaxRAMPercentage=75.0 -D
# jstack 6
6: Unable to get pid of LinuxThreads manager thread
# jinfo 完全没反应
...
slim 构建,在 k8s 无论是否以 .Pod.Spec.shareProcessNamespace = true 启动,均可以正常使用 jinfo, jstack 等(但是默认没装 ps,不过使用 jps 看进程足矣)
cat << EOF | docker build -t aliprod-reg.llsops.com/it/backend/pop:20200727-dev-slim-1 . -f -
FROM docker.io/library/openjdk:8u262-slim-buster
COPY /target/pop-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]
EOF
//todo 在 alpine 中安装 glibc ?
cat << EOF | docker build -t aliprod-reg.llsops.com/it/backend/pop:20200727-dev-adoptslim-1 . -f -
FROM docker.io/adoptopenjdk/openjdk8:jdk8u262-b10-ubuntu-slim
COPY /target/pop-0.0.1-SNAPSHOT.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]
EOF