Boot2docker очень медленный в Windows без общих папок

У меня есть образ Docker с базой данных Oracle и около 5 миллионов строк, которые мне нужно обработать.

Моя машина работает под управлением Windows 7, и я использую Docker внутри виртуальной машины Virtualbox под управлением Ubuntu. Виртуальная машина настроена с 2 ГБ ОЗУ и 4 логическими ядрами. База данных работает внутри контейнера Docker на виртуальной машине, а клиент моего приложения работает на хост-компьютере Windows. В этом случае приложение запускается и обрабатывает все за 230 секунд.

Второй сценарий — на той же хост-машине, но вместо виртуальной машины Ubuntu я использую Boot2docker. Я также настроил виртуальную машину Boot2docker на использование 2 ГБ ОЗУ и 4 логических ядер. Используя тот же образ Docker, что и раньше, я запускаю базу данных из контейнера в Boot2docker и использую Windows для запуска клиента. Однако на этот раз тест занимает 1840 секунд вместо 230.

Эти тесты повторяемы и показывают отклонение не более чем на 5%.

Помимо ЦП и памяти, сетевая конфигурация одинакова (один адаптер для NAT и один только для хоста), конфигурация хранилища одинакова и использует тот же диск на хосте, а контейнер не использует общие папки на host, поскольку я знаю, что это может вызвать проблемы с производительностью Virtualbox.

Я также пробовал тестировать с использованием виртуальной машины Debian, и производительность была такой же, как у Ubuntu.

Я в замешательстве, почему это происходит. Аппаратное обеспечение такое же, как Ubuntu, так и Boot2docker работают внутри виртуальных машин VirtualBox с одинаковой конфигурацией, но Ubuntu в 8 раз быстрее, чем Boot2docker. Есть идеи, почему?


person Ricardo Smania    schedule 14.05.2015    source источник


Ответы (1)


Я нашел проблему. Когда Boot2docker установлен, сеть только для хоста создается с типом адаптера Paravirtualized Network. Я изменил его на PCnet-FAST III, и он стал намного быстрее.

person Ricardo Smania    schedule 14.05.2015