4

проблема

У меня очень медленный дисковый ввод-вывод в контейнере Docker. Я использую Boot2Docker, так что я на самом деле сейчас задаюсь вопросом, является ли проблема vboxsf?

тестирование

Первоначально я использовал этот сценарий, потому что я отлаживал веб-приложение, но, похоже, это сам диск для чтения.

  • В докере: 1.6156311035156
  • Host: 0.022423028945923

Я проверил скорость диска с dd и результаты в контейнере:

$ time sh -c "dd if=/dev/zero of=ddfile bs=8k count=25000 && sync"; rm ddfile
25000+0 records in
25000+0 records out
204800000 bytes (205 MB) copied, 4.23099 s, 48.4 MB/s

real    0m4.241s
user    0m0.000s
sys 0m2.110s

И на хосте:

$ time sh -c "dd if=/dev/zero of=ddfile bs=8k count=25000 && sync"; rm ddfile
25000+0 records in
25000+0 records out
204800000 bytes transferred in 0.482290 secs (424640750 bytes/sec)
sh -c "dd if=/dev/zero of=ddfile bs=8k count=25000 && sync"  
0.01s user 0.30s system 48% cpu 0.650 total

Хост выводится в байтах, а контейнер - в мегабайтах, но при преобразовании этих чисел разница в скорости примерно в 10 раз превышает скорость.

Я использую Docker -v host/folder:container:/folder для монтирования кодовой базы в контейнер. Я не совсем уверен, куда идти отсюда. Существуют ли какие-либо известные проблемы с монтированием Docker? Или может быть еще одна проблема в игре?

2 ответа2

5

так что вы используете макинтош. Это означает, что вы устанавливаете докер на virtualbox ... так вот, как идет хранение

os x -> virtualbox vm -> linux FS of choice -> aufs -> docker

Таким образом, вы добавляете еще один слой VM поверх того, что уже есть на нем.

Я не думаю, что кто-то утверждал, что док-станция IO будет работать так же, как вы видите на хосте.

5

Проблема в vboxsf, а не в docker. Провёл дни, играя с этим. vboxsf невероятно медленно работает. NFS быстрее, зависит от того, что вы хотите сделать, хотя.

Я решил, что мне все равно не нужны файлы на моем хосте, поэтому впоследствии просто создал новый виртуальный диск в моем бродячем файле, куда клонируется мой источник, и затем я просто скопировал этот файл.

Это трудно сделать с помощью boot2docker, который я обнаружил, поэтому я просто использую виртуальную коробку и vagrant с созданным мной образом, hp-ess/docker, в котором собраны новейшие docker и docker.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .