Docker impone muy poca sobrecarga, solo aísla el proceso de otros procesos en el host. Sin embargo, hay muchas cosas que puede hacer para degradar el rendimiento de un contenedor:
- Ejecútelo dentro de Windows/MacOS mientras le da a la máquina virtual integrada solo una fracción de la memoria/CPU del sistema operativo principal.
- Restringe los recursos de CPU o memoria dentro del contenedor.
- Inicie una gran cantidad de contenedores en su host. Docker no es mágico, si 10 instancias de Java, cada una con 2 gigas de RAM, hacen que el host se arrastre fuera del contenedor, no funcionarán mejor dentro de los contenedores.
- Complicaciones de la red. Cada contenedor gira de forma predeterminada en un puente de red aislado, donde IO puede tardar un poco más con los saltos adicionales. Y si su DNS no está configurado correctamente, es posible que vea demoras adicionales debido a búsquedas fallidas.
- Los requisitos básicos, como el acceso directo al disco, no están permitidos de forma predeterminada en Docker. Puede otorgar acceso a dispositivos específicos, pero de lo contrario, la versión en contenedor de la aplicación se aísla intencionalmente.
- Los datos en volúmenes pueden residir en una ubicación menos eficiente. De forma predeterminada, es su sistema de archivos /var/lib/docker, pero podría apuntar fácilmente a un montaje NFS donde el rendimiento sería aún peor.
- Base de datos mal configurada, p. olvidando crear un índice.
En resumen, es poco probable que el contenedor sea el problema en sí, pero asegúrese de hacer una comparación de manzanas con manzanas.