Sam Docker nakłada bardzo mało narzutu, po prostu izoluje proces od innych procesów na hoście. Jest jednak wiele rzeczy, które możesz zrobić, aby obniżyć wydajność kontenera:
- Uruchom go w systemie Windows/MacOS, dając wbudowanej maszynie wirtualnej tylko część pamięci/procesora macierzystego systemu operacyjnego.
- Ogranicz zasoby procesora lub pamięci w kontenerze.
- Uruchamiaj wiele kontenerów na swoim hoście. Docker nie jest magiczny, jeśli 10 instancji Java używających 2 gigabajtów pamięci RAM doprowadzi hosta do indeksowania poza kontenerem, nie będą działać lepiej wewnątrz kontenerów.
- Komplikacje sieciowe. Każdy kontener jest domyślnie uruchamiany na izolowanym moście sieciowym, gdzie IO może zająć trochę więcej czasu z dodatkowymi przeskokami. A jeśli Twój DNS nie jest prawidłowo skonfigurowany, możesz zauważyć dodatkowe opóźnienia wynikające z nieudanych wyszukiwań.
- Wymagania Bare Metal, takie jak bezpośredni dostęp do dysku, nie są domyślnie dozwolone w Dockerze. Możesz przyznać dostęp określonym urządzeniom, ale poza tym skonteneryzowana wersja aplikacji jest celowo izolowana.
- Dane w wolumenach mogą znajdować się w mniej wydajnej lokalizacji. Domyślnie jest to twój system plików /var/lib/docker, ale możesz łatwo wskazać to montowanie NFS, gdzie wydajność byłaby jeszcze gorsza.
- Błędnie skonfigurowana baza danych, np. zapominając o utworzeniu indeksu.
Krótko mówiąc, pojemnik raczej nie jest problemem, ale upewnij się, że robisz porównanie jabłek z jabłkami.