Docker stesso impone un sovraccarico minimo, isola semplicemente il processo da altri processi sull'host. Tuttavia, ci sono molte cose che puoi fare per ridurre le prestazioni di un container:
- Eseguilo all'interno di Windows/MacOS fornendo alla VM incorporata solo una frazione della memoria/CPU del sistema operativo principale.
- Limita la CPU o le risorse di memoria all'interno del contenitore.
- Avvia molti container sul tuo host. Docker non è magico, se 10 istanze di Java ciascuna che utilizzano 2 giga di RAM portano l'host a eseguire una scansione al di fuori del container, non funzioneranno meglio all'interno dei container.
- Complicazioni di rete. Per impostazione predefinita, ogni contenitore viene avviato su un bridge di rete isolato, dove l'IO potrebbe richiedere un po' più di tempo con gli hop aggiuntivi. E se il tuo DNS non è configurato correttamente, potresti notare ulteriori ritardi dovuti alle ricerche non riuscite.
- I requisiti bare metal come l'accesso diretto al disco non sono consentiti per impostazione predefinita in Docker. Puoi concedere l'accesso a dispositivi specifici, ma in caso contrario la versione containerizzata dell'app viene isolata intenzionalmente.
- I dati nei volumi possono risiedere in una posizione meno efficiente. Per impostazione predefinita è il tuo filesystem /var/lib/docker, ma potresti facilmente puntarlo a un mount NFS dove le prestazioni sarebbero anche peggiori.
- DB non configurato correttamente, ad es. dimenticando di creare un indice.
In breve, è improbabile che il contenitore stesso sia il problema, ma assicurati di fare un confronto mele con mele.