Подтвердить что ты не робот

Докер на медленных томах OSX

Я пытаюсь использовать докер-бет на OSX, главным образом для разработки Symfony, но смонтированные тома невероятно медленны. Даже для проекта Vanilla Symfony я получаю время загрузки страницы 6s. Это невыносимо! Кто-нибудь нашел решение этой проблемы? Пытаясь отойти от бродяг, но я просто не могу найти разумный способ работать с докером.

4b9b3361

Ответ 2

Хорошо, что пользователь Spiil дал решение, но я хотел подробно рассказать о том, какие шаги нужно предпринять, поскольку я проработал 12 часов, пытаясь понять это, но как только вы узнаете, как его супер легко и исправляет все проблемы с замедлением!

Ключевым моментом здесь является понимание этого решения, создающего диски NFS (Network File System) как средства связи из контейнеров Docker на ваш Mac вместо стандартной файловой системы OSX, которая в настоящее время очень медленная из-за ошибок или способа он работает *

Выполните следующие шаги.

1.) Клонирование этого репо здесь (https://github.com/IFSight/d4m-nfs) в вашем домашнем каталоге. Для этого откройте терминал и введите cd ~

Затем введите git clone https://github.com/IFSight/d4m-nfs

В качестве альтернативы вы также можете сделать это в одном лайнере git clone https://github.com/IFSight/d4m-nfs ~/d4m-nfs

2.) Затем перейдите в папку d4m-nfs и создайте новый файл в папке /etc и запишите его d4m-nfs-mounts.txt

3.) Добавьте сюда следующие строки кода.

/Users/yourusername:/Users/yourusername:0:0

То, что вы сделали выше, позволяет вам по-прежнему использовать относительные папки с помощью docker-compose и позволяет всем портам подключаться к нему, следовательно, 0: 0.

ИЗМЕНИТЬ Не помещайте/Объемы здесь!

4.) Перейдите к своим предпочтениям докеров и выполните следующие действия

введите описание изображения здесь

Убедитесь, что отображается только /tmp, и NOTHING ELSE. Я имею в виду, что ничего другого он не будет работать, если есть что-то еще, так как это создаст конфликты с системами NFS, которые script сделает для вас позже. Перезагрузите докер и докер, скомпонуйте все контейнеры.

5.) Наконец, перейдите к каталогу d4m-nfs, который мы создали на шаге 1, и введите следующую команду: /bin/bash d4m-nfs.sh

edit Правильный способ ввода команды выше - это, как указано другим пользователем из github (if-kenn), ./d4m-nfs.sh, который использует Shebang для какой оболочки должен запускать его.

Если все сделано правильно, ошибок не должно быть, и это должно сработать. Обратите внимание, что НЕ ПРОПУСТИТЕ, поскольку sh d4m-nfs.sh это создаст ошибки, и вам нужно будет удалить файл экспорта, чтобы начать все заново. Фактически в любое время, когда вы вносите какие-либо изменения, вам придется очистить файл экспорта.

Это то, на что похожа моя.

введите описание изображения здесь

РЕДАКТИРОВАТЬ:: ВАЖНО - Удалите/частные и тома! Это должны быть только пользователи/имя пользователя!

Если вы видите что-то другое, кроме этого, вы не работаете с bash. Вы можете быстро перейти к файлу экспорта, подобному этому, на Mac, если вы делаете какие-либо ошибки и просто очищаете его, чтобы начать работу.

Просто выберите в папку

введите описание изображения здесь

а затем введите /etc/exports

Это хороший ярлык, чтобы быстро добраться до него и очистить его в своем любимом текстовом редакторе.

Также убедитесь, что контейнеры не работают, или вы получите цикл смерти........ Если этот цикл смерти продолжается, убедитесь, что вы обновили докер, а затем перезагрузите компьютер. Да, перезагрузка... казалось, это единственный способ заставить его работать на компьютере моих друзей. См. Это (https://github.com/IFSight/d4m-nfs/issues/3)

Примечание для цикла. Недавно я нашел другое решение. Убедитесь, что вы не зарегистрированы как root, и убедитесь, что вы перетащили репозиторий git в папку users ~, а не в корневую папку. Другими словами, это должно быть в User/username.

Кроме того, убедитесь, что папка /tmp имеет полные права записи, так как script должен писать здесь, иначе это тоже не сработает. chmod 777 -R /tmp

6.) Если вы сделали это правильно при запуске script, это будет выглядеть так.

введите описание изображения здесь

Затем просто запустите свой docker-compose up -d, как обычно, в папке проекта symfony (или любом проекте, который вы используете с докером), и все должно работать... кроме НЕСКОЛЬКО замедлений!

Вам нужно будет запустить его в любое время, когда вы перезагрузите компьютер или докер.

Также обратите внимание, что при появлении ошибок установки вы, вероятно, не сохранили свой проект в каталоге Users/username. Помните, что мы установили его. Если ваш проект где-то не там, вам нужно будет соответствующим образом изменить файл d4m-nfs-mounts.txt.

Дополнительная информация:

введите описание изображения здесь

Ответ 4

Для людей, читающих это сейчас, может быть, лучше подождать, пока Docker исправит эту проблему. Для повышения производительности уже принят запрос на вытягивание (https://github.com/docker/docker/pull/31047). Это будет выпуск где-то в апреле 2017 года и должно быть большим улучшением.

Я пробовал некоторые обходные пути для Docker для Mac, но все они имели некоторые довольно большие недостатки, в основном в удобстве использования. Хороший источник альтернатив OSXFS можно найти по адресу: https://github.com/EugenMayer/docker-sync/wiki/Alternatives-to-docker-sync. Кредиты для Eugen Mayer для настройки этого.

ИЗМЕНИТЬ: Первое усовершенствование реализовано в крайнем выпуске. https://github.com/docker/for-mac/issues/77 имеет более подробную информацию об этом.

Ответ 5

Я потратил много времени на поиски жизнеспособного решения. И я нашел. d4m-nfs позволяют использовать объемы докеров через nfs. В моем случае это увеличило производительность в 16 раз! (1,8 сек против ~ 30 сек)

Кроме того, d4m-nfs имеет довольно сложное руководство, так что вот еще одна ссылка с подробным примером: https://github.com/laradock/laradock/issues/353#issuecomment-262897619

Я просто оставляю это здесь для других гуглеров.

Ответ 6

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

Но, возможно, узким местом является процессор или оперативная память. Вы можете проверить это с помощью команды docker stats. По умолчанию они установлены на 2 ядра и 2 ГБ оперативной памяти. Вы можете изменить это в графическом интерфейсе Docker для Mac.

Ответ 7

У меня было то же самое. Для меня использование docker-bg-sync (см. В GitHub) значительно улучшило скорость и использование ЦП.

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

Ответ 8

В последнем докере 17.06.0-ce-mac18 томов, смонтированных с помощью: кэширования, кажется, работает вполне прилично.