O próprio Docker impõe muito pouca sobrecarga, apenas isola o processo de outros processos no host. No entanto, há muitas coisas que você pode fazer para degradar o desempenho de um contêiner:
- Execute-o no Windows/MacOS enquanto fornece à VM incorporada apenas uma fração da memória/CPU do sistema operacional pai.
- Restringir recursos de CPU ou memória dentro do contêiner.
- Inicie muitos contêineres em seu host. O Docker não é mágico, se 10 instâncias de Java, cada uma usando 2 GB de RAM, levarem o host para um rastreamento fora do contêiner, elas não funcionarão melhor dentro dos contêineres.
- Complicações de rede. Cada contêiner é, por padrão, girado em uma ponte de rede isolada, onde a E/S pode demorar um pouco mais com os saltos extras. E se seu DNS não estiver configurado corretamente, você poderá ver atrasos extras de pesquisas com falha.
- Requisitos bare metal, como acesso direto ao disco, não são permitidos por padrão no Docker. Você pode conceder acesso a dispositivos específicos, mas, caso contrário, a versão em contêiner do aplicativo é isolada intencionalmente.
- Os dados em volumes podem residir em um local menos eficiente. Por padrão, é seu sistema de arquivos /var/lib/docker, mas você pode facilmente apontar isso para uma montagem NFS onde o desempenho seria ainda pior.
- DB mal configurado, por exemplo esquecendo de criar um índice.
Em suma, é improvável que o contêiner seja o problema em si, mas certifique-se de fazer uma comparação de maçãs com maçãs.