Docker lui-même impose très peu de surcharge, il isole simplement le processus des autres processus sur l'hôte. Cependant, vous pouvez faire beaucoup de choses pour dégrader les performances d'un conteneur :
- Exécutez-le sous Windows/MacOS en n'accordant à la VM intégrée qu'une fraction de la mémoire/du processeur de l'OS parent.
- Restreindre les ressources de processeur ou de mémoire à l'intérieur du conteneur.
- Lancez de nombreux conteneurs sur votre hôte. Docker n'est pas magique, si 10 instances de Java utilisant chacune 2 Go de RAM amènent l'hôte à explorer en dehors du conteneur, elles ne fonctionneront pas mieux à l'intérieur des conteneurs.
- Complications de mise en réseau. Chaque conteneur est par défaut lancé sur un pont réseau isolé, où les E/S peuvent prendre un peu plus de temps avec les sauts supplémentaires. Et si votre DNS n'est pas correctement configuré, vous pouvez constater des retards supplémentaires dus aux échecs de recherche.
- Les exigences Bare Metal telles que l'accès direct au disque ne sont pas autorisées par défaut dans Docker. Vous pouvez donner accès à des appareils spécifiques, sinon la version conteneurisée de l'application est intentionnellement isolée.
- Les données en volumes peuvent résider dans un emplacement moins efficace. Par défaut, il s'agit de votre système de fichiers /var/lib/docker, mais vous pouvez facilement le faire pointer vers un montage NFS où les performances seraient encore pires.
- DB mal configurée, par ex. oubli de créer un index.
En bref, il est peu probable que le conteneur soit le problème lui-même, mais assurez-vous de comparer des pommes avec des pommes.