Самият Docker налага много малко режийни разходи, той просто изолира процеса от други процеси на хоста. Има обаче много неща, които можете да направите, за да влошите производителността на контейнер:
- Стартирайте го в Windows/MacOS, като същевременно давате на вградената виртуална машина само част от паметта/CPU на родителската операционна система.
- Ограничете ресурсите на процесора или паметта вътре в контейнера.
- Стартирайте много контейнери на вашия хост. Docker не е магия, ако 10 екземпляра на Java, всеки от които използва 2 гига ram, доведат хоста до обхождане извън контейнера, те няма да работят по-добре вътре в контейнерите.
- Мрежови усложнения. Всеки контейнер по подразбиране се завърта на изолиран мрежов мост, където IO може да отнеме малко повече време с допълнителните скокове. И ако вашият DNS не е правилно конфигуриран, може да видите допълнителни забавяния от неуспешни търсения.
- Изисквания за чист метал, като директен достъп до диска, не са разрешени по подразбиране в Docker. Можете да дадете достъп до конкретни устройства, но в противен случай контейнеризираната версия на приложението се изолира умишлено.
- Данните в обеми може да се намират на по-малко ефективно място. По подразбиране това е вашата /var/lib/docker файлова система, но можете лесно да я насочите към NFS монтиране, където производителността ще бъде още по-лоша.
- Неправилно конфигурирана база данни, напр. забравяте да създадете индекс.
Накратко, малко вероятно е контейнерът да е самият проблем, но се уверете, че правите сравнение между ябълки.