Ir al contenido

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.


GalataJ descubre automáticamente aplicaciones Java ejecutándose dentro de contenedores Docker en su máquina local.

  1. Inicie su contenedor Docker con una aplicación Java
  2. Abra el panel Profiler en su IDE
  3. Haga clic en Actualizar — Los contenedores Docker aparecen en la lista de JVMs
  4. 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.


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.


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:

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:

Ventana de terminal
docker compose up

Copie el JAR del agente en el directorio de su proyecto:

Ventana de terminal
cp ~/.galataj/agent/agent.jar ./agent.jar

Luego añada estas líneas a su Dockerfile antes del ENTRYPOINT:

COPY agent.jar /opt/galataj-agent.jar
ENV JAVA_TOOL_OPTIONS="-javaagent:/opt/galataj-agent.jar"
ENV GALATAJ_PACKAGE=com.mycompany.myapp

No se necesitan cambios en archivos — pase el montaje de volumen y las variables de entorno directamente:

Ventana de terminal
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-image
  • Reemplace com.mycompany.myapp con 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.

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.


  1. Asegúrese de que el contenedor esté ejecutándose (no detenido)
  2. Haga clic en Actualizar en el panel del profiler
  3. Verifique que el contenedor tenga un proceso Java dentro
  4. Ejecute Health Check para asegurar que GalataJ esté funcionando
  1. Asegúrese de tener una licencia Pro activada
  2. Verifique que Docker esté ejecutándose en su máquina
  3. 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-jdk

Imá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.


Actualizar a Pro

Obtenga perfilado de Docker y más

Actualizar →

Historial de Sesiones

Compare el rendimiento del contenedor a lo largo del tiempo

Más información →