@develnk

Почему скорость работы дисковых операций в docker контейнере такая медленная?

Уже давно работаю с докером, собрал много контейнеров, которые работают и по сути нет нареканий. Но я никак не могу понять вот что: есть дамп базы sql объёмом например 10Mb. Есть Докер контейнер с mysql внутри(докер конейнер mysql из официального образа). Предположим что файлы базы физически находятся на HDD диске которые пробрасываются внутрь контейнера. Когда я заливаю дамп из sql файла в этот докер контейнер то он будет заливаться к примеру 5 минут.
Если файлы базы лежат на SSD то время сокращается примерно в 10 раз, оно и понятно, скорость чтения/записи на SSD как раз в 10 раз выше чем у HDD.
Но меня беспокоит вопрос: если я просто установлю mysql внутрь системы и залью туда дамп то скорость заливки существенно сокращается. Те же 10Мб зальются на HDD за секунд 20, про SSD можно вообще не говорить. Почему такая большая разница в скорости разворачивания дампа sql файла внутри контейнера по сравнению с разворачиванием на прямую? И вопрос не только в скорости развёртывания, то есть операция записи, чтение также страдает. Из-за этого обычный drupal сайт грузится в разы медленнее чем, если бы его база была не в докер контейнере.
Я не делал точных замеров, но пропорции по времени выполнения примерно такие. Конечно я понимаю что docker это система виртуализации а наверняка из-за этого есть какой-то оверхед, но не настолько же большой! Нигде в интернете не могу найти информацию по этому вопросу, такое ощущение что всем пофиг на это.
  • Вопрос задан
  • 2060 просмотров
Пригласить эксперта
Ответы на вопрос 1
chupasaurus
@chupasaurus
Сею рефлекторное, злое, временное
Основной оверхед при записи на диск в контейнере - это запись в тома образов, а не напрямую в дерево файлов хоста. Можно избежать путём указания точек монтирования в docker run ... -v /путь/источник:куда/монтируем
Документация
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы