Perfilado de Docker
Función Pro
El perfilado de Docker requiere una licencia Pro.
Perfile aplicaciones Java ejecutándose en contenedores Docker locales con descubrimiento automático.
Cómo Funciona
Sección titulada «Cómo Funciona»GalataJ descubre automáticamente aplicaciones Java ejecutándose dentro de contenedores Docker en su máquina local.
- Inicie su contenedor Docker con una aplicación Java
- Abra el panel Profiler en su IDE
- Haga clic en Actualizar — Los contenedores Docker aparecen en la lista de JVMs
- Seleccione el contenedor e inicie el perfilado
No se necesita configuración. GalataJ maneja la conexión automáticamente.
JDK recomendado para attach automático
Si su contenedor usa una imagen JDK, GalataJ se conecta automáticamente sin configuración. Si su contenedor usa un JRE o un JDK sin soporte de attach, aún puede perfilar usando el enfoque -javaagent. Vea Alternativa: Uso de -javaagent abajo.
Qué Se Descubre
Sección titulada «Qué Se Descubre»GalataJ encuentra procesos Java ejecutándose en:
- Docker Desktop (Windows/macOS)
- Docker Engine (Linux)
- Proyectos Docker Compose
Mientras el contenedor esté ejecutándose en su máquina local, GalataJ puede perfilarlo.
Identificando Contenedores
Sección titulada «Identificando Contenedores»En la lista de JVMs, los contenedores Docker muestran:
- Nombre del contenedor — El nombre que le dio al contenedor
- Nombre de la imagen — La imagen Docker que se está usando
- ID del contenedor — ID corto para identificación
Alternativa: Uso de -javaagent
Si el attach automático no funciona — por ejemplo, si su contenedor usa una imagen JRE o un JDK que no soporta attach en tiempo de ejecución — puede cargar el agente del profiler al inicio usando -javaagent. Esto funciona con cualquier imagen Java, incluyendo JRE.
Elija una de las siguientes opciones:
Opción 1: docker-compose.yml
Sección titulada «Opción 1: docker-compose.yml»Añada lo siguiente a su definición de servicio — no se necesitan cambios en el Dockerfile:
services: my-app: # ... your existing config ... volumes: - ~/.galataj/agent/agent.jar:/opt/galataj-agent.jar:ro environment: - JAVA_TOOL_OPTIONS=-javaagent:/opt/galataj-agent.jar - GALATAJ_PACKAGE=com.mycompany.myapp extra_hosts: - "host.docker.internal:host-gateway"Luego reinicie sus servicios:
docker compose upOpción 2: Dockerfile
Sección titulada «Opción 2: Dockerfile»Copie el JAR del agente en el directorio de su proyecto:
cp ~/.galataj/agent/agent.jar ./agent.jarLuego añada estas líneas a su Dockerfile antes del ENTRYPOINT:
COPY agent.jar /opt/galataj-agent.jarENV JAVA_TOOL_OPTIONS="-javaagent:/opt/galataj-agent.jar"ENV GALATAJ_PACKAGE=com.mycompany.myappOpción 3: docker run
Sección titulada «Opción 3: docker run»No se necesitan cambios en archivos — pase el montaje de volumen y las variables de entorno directamente:
docker run \ -v ~/.galataj/agent/agent.jar:/opt/galataj-agent.jar:ro \ -e JAVA_TOOL_OPTIONS="-javaagent:/opt/galataj-agent.jar" \ -e GALATAJ_PACKAGE=com.mycompany.myapp \ --add-host=host.docker.internal:host-gateway \ your-imageNotas importantes
Sección titulada «Notas importantes»- Reemplace
com.mycompany.myappcon el paquete base de su aplicación (ej. el paquete que contiene su clase@SpringBootApplication). - En Linux, la bandera
extra_hosts(Compose) o--add-host(docker run) es necesaria para que el contenedor pueda alcanzar el host. Los ejemplos anteriores ya incluyen esto. - Al usar el asistente del IDE, el fragmento generado ya tiene el paquete correcto rellenado.
Limitaciones
Sección titulada «Limitaciones»Solo Local
GalataJ solo puede perfilar contenedores Docker ejecutándose en su máquina local. Los hosts Docker remotos (SSH, API Docker remota) no están soportados actualmente.
Solución de Problemas
Sección titulada «Solución de Problemas»El contenedor no aparece
Sección titulada «El contenedor no aparece»- Asegúrese de que el contenedor esté ejecutándose (no detenido)
- Haga clic en Actualizar en el panel del profiler
- Verifique que el contenedor tenga un proceso Java dentro
- Ejecute Health Check para asegurar que GalataJ esté funcionando
El perfilado no inicia
Sección titulada «El perfilado no inicia»- Asegúrese de tener una licencia Pro activada
- Verifique que Docker esté ejecutándose en su máquina
- Intente reiniciar su IDE
Attach fallido: jdk.attach no disponible
Si ve errores como:
- “jdk.attach module not available in container”
- “The container image must include JDK (not just JRE)”
- “NoClassDefFoundError: com/sun/tools/attach/AttachNotSupportedException”
el contenedor está usando una imagen JRE o un JDK sin soporte de attach.
Solución A — Cambie a una imagen JDK:
# Antes (falla para attach automático)FROM eclipse-temurin:17-jre
# Después (funciona con GalataJ)FROM eclipse-temurin:17-jdkImágenes JDK recomendadas: eclipse-temurin:17-jdk, amazoncorretto:17, azul/zulu-openjdk:17.
Reconstruya la imagen y ejecute el contenedor nuevamente, luego inicie el perfilado.
Solución B — Use -javaagent en su lugar:
Si no puede cambiar a una imagen JDK, use el enfoque -javaagent que funciona con cualquier imagen Java incluyendo JRE. Vea Alternativa: Uso de -javaagent arriba.