Docker zelf legt heel weinig overhead op, het isoleert alleen het proces van andere processen op de host. Er zijn echter veel dingen die u kunt doen om de prestaties van een container te verminderen:
- Voer het uit in Windows/MacOS en geef de ingebouwde VM slechts een fractie van het geheugen/CPU van het bovenliggende besturingssysteem.
- Beperk CPU- of geheugenbronnen in de container.
- Lanceer veel containers op je host. Docker is geen magie, als 10 instanties van Java die elk 2 gig ram gebruiken, de host buiten de container laten kruipen, zullen ze niet beter werken in containers.
- Netwerkcomplicaties. Elke container wordt standaard op een geïsoleerde netwerkbrug gedraaid, waar IO wat langer kan duren met de extra hops. En als uw DNS niet correct is geconfigureerd, ziet u mogelijk extra vertragingen door mislukte zoekopdrachten.
- Bare metal-vereisten zoals directe schijftoegang zijn standaard niet toegestaan in Docker. Je kunt specifieke apparaten toegang geven, maar anders wordt de gecontaineriseerde versie van de app opzettelijk geïsoleerd.
- Gegevens in volumes kunnen zich op een minder efficiënte locatie bevinden. Standaard is dit je /var/lib/docker bestandssysteem, maar je zou dit gemakkelijk kunnen verwijzen naar een NFS-mount waar de prestatie nog slechter zou zijn.
- Onjuist geconfigureerde database, bijv. vergeten een index te maken.
Kortom, het is onwaarschijnlijk dat de container het probleem zelf is, maar zorg ervoor dat u een vergelijking maakt tussen appels en appels.