Andockfenster auf OSX langsam volumes
Ich versuche, verwenden Sie das Andockfenster beta für OSX, hauptsächlich für Symfony-Entwicklung, aber die volumes sind unglaublich langsam. Auch für einen Vanille-Symfony-Projekt, das ich bekommen 6s Ladezeit der Seite. Das ist unerträglich! Hat jemand eine Lösung gefunden für dieses Problem? Versuchen, Weg von vagrant, aber ich finde keine vernünftige Möglichkeit zur Arbeit mit docker statt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Okay der Benutzer Spiil gab eine Lösung, aber ich wollte näher auf die genauen Schritte zu ergreifen, da ging ich über 12 Stunden zu versuchen, es herauszufinden, aber sobald Sie wissen, wie Ihr super einfach und beseitigt die slow down Probleme!
Der Schlüssel hier ist, um zu verstehen, diese Lösung schafft NFS (Network File System) - Laufwerken wie die Mittel der Kommunikation aus der Docker-Container auf Ihrem Mac statt der standard-OSX-Dateisystem, die ist sehr langsam, die derzeit entweder aufgrund von Fehlern oder wie es funktioniert*
Befolgen Sie diese Schritte genau.
1.) Clone das repo hier (https://github.com/IFSight/d4m-nfs) in Ihrem home-Verzeichnis. Um dies zu tun öffnen Sie terminal und geben Sie
cd ~
Geben
git clone https://github.com/IFSight/d4m-nfs
Alternativ können Sie auch dies tun, in einem one-liner
git clone https://github.com/IFSight/d4m-nfs ~/d4m-nfs
2.) Anschließend gehen Sie in die d4m-nfs-Ordner und erstellen Sie eine neue Datei im /etc Ordner und Titel es
d4m-nfs-mounts.txt
3.) Fügen Sie die folgenden Zeilen von code, um dieses.
Was das obige nicht ist, können Sie immer noch einen relativen Ordner mit docker-verfassen und erlaubt es, alle ports zu schließen, die auf es daher 0:0.
BEARBEITEN
Tun nicht put /Bände hier!!
4.) Gehen Sie zu Ihrem docker-Einstellungen und führen Sie die folgenden
Stellen Sie sicher, dass nur /tmp zeigt und SONST NICHTS. Ich meine, nichts anderes, es wird nicht funktionieren, wenn es etwas anderes, da wird es zu Konflikten mit den NFS-Systemen, die das Skript wird für Sie später. Neu starten, Hafenarbeiter und docker-verfassen Sie sich alle Behälter als gut.
5.) Schließlich navigieren Sie zu dem d4m-nfs-Verzeichnis, das wir in Schritt 1 erstellt haben, und geben Sie den folgenden Befehl ein,
/bin/bash d4m-nfs.sh
Bearbeiten Die richtige Art und Weise geben Sie den oben aufgeführten Befehl wird diese als ein anderer Benutzer aus dem github (wenn-kenn) wies darauf hin,
./d4m-nfs.sh
was nutzt das Programm, für welche shell sollte es laufen.Wenn es richtig gemacht es sollten keine Fehler auftreten und dies sollte funktionieren. Bitte beachten Sie LAUFEN NICHT als sh d4m-nfs.sh dies erzeugt Fehler und Sie müssen Sie löschen Ihre Export-Datei zu beginnen. In der Tat, immer wenn Sie änderungen vornehmen, werden Sie sich Ihre Export-Datei.
Dies ist, was mir aussieht.
EDIT:: WICHTIG-Entfernen Sie das /private und Volumen! Dies sollte nur Benutzer/Benutzername jetzt!
Wenn Sie sehen, was andere als diese, die Sie nicht aktiv waren, mit der bash. Sie können schnell zu erhalten, um die Export-Datei wie folgt in den Mac, wenn Sie machen alle Fehler und nur klar, dass es sich um von vorn zu beginnen.
Nur wählen Sie gehe zu Ordner
und geben Sie dann
/etc/exports
Dies ist eine nette Abkürzung, um schnell auf und deaktivieren Sie es in Ihrem Lieblings-text-editor.
Auch sicherstellen, dass keine Container ausgeführt werden oder erhalten Sie die ........ Schleife des Todes. Wenn diese Schleife von Tod weiterhin stellen Sie sicher, dass Sie aktualisieren Andockfenster und starten Sie den computer neu. Ja neu starten... es schien die einzige Möglichkeit zu sein, um es zu erhalten zu arbeiten auf meinem computer Freunde. Beziehen sich auf diese (https://github.com/IFSight/d4m-nfs/issues/3)
Hinweis .... loop. Vor kurzem habe ich eine andere Lösung gefunden. Stellen Sie sicher, Sie sind NICHT angemeldet als root, und stellen Sie sicher, du hast das git-repo in Ihre Benutzer ~ Ordner nicht die Wurzel ~ Ordner. In otherwords, sollte es in Benutzer/Benutzername.
Stellen Sie außerdem sicher, dass /tmp Ordner hat volle Schreibrechte, da muss das Skript hier schreiben, oder wird das nicht funktionieren.
chmod 777 -R /tmp
6.) Wenn du es getan hast Recht, wenn das script ausgeführt wurde, wird es so Aussehen.
Dann starten Sie einfach Ihre docker-verfassen-bis -d wie gewohnt in Ihr symfony-Projekt-Ordner (oder was auch immer Projekt, die Sie mit docker) und alles sollte funktionieren... außer, dass KEINE MEHR slow downs!
Müssen Sie diese Wann immer Sie Ihren computer neu starten oder docker.
Beachten Sie auch, wenn Sie Montage-Fehler auftauchen, die Sie wahrscheinlich nicht haben, Ihr Projekt in Ihrer gespeicherten Benutzer/Benutzername Verzeichnis. Denken Sie daran, dass ist, wo wir bestiegen es. Wenn Ihr Projekt ist irgendwo anders als dort müssen Sie ändern die d4m-nfs-mounts.txt Datei entsprechend.
Weitere Infos:
Anscheinend gibt es einen workaround im moment:
https://forums.docker.com/t/file-access-in-mounted-volumes-extremely-slow-cpu-bound/8076/48
https://forums.docker.com/t/how-to-speed-up-shared-folders/9322/15
Für Menschen, die das jetzt Lesen, ist es vielleicht besser zu warten, bis Andockfenster um dieses Problem zu beheben. Ein pull-request wurde bereits angenommen, um die Leistung zu verbessern(https://github.com/docker/docker/pull/31047).
Diese Freigabe irgendwo im April 2017 und sollte eine große Verbesserung.
Habe ich versucht, einige workarounds für Docker für Mac, aber alle von Ihnen hatten ein paar ziemlich große Nachteile, meist in der usability. Eine gute Quelle für alternativen der OSXFS finden Sie unter: https://github.com/EugenMayer/docker-sync/wiki/Alternatives-to-docker-sync. Kredite für Eugen Mayer für die Einstellung.
BEARBEITEN:
Erste Verbesserung wird umgesetzt in der edge-Version. https://github.com/docker/for-mac/issues/77 hat mehr Informationen über diese.
Es gibt einen langer thread mit Erklärung von Docker-Team und verschiedene workarounds.
Derzeit das Problem ist, die verfolgt werden, die auf GitHub.
Während einige workarounds kann besser sein als andere, ich fürchte, die ideale Wahl für jetzt ist, zu Linux wechseln.
Verbrachte ich viel von meiner Zeit in der Suche nach tragfähigen Lösung. Und ich fand.
d4m-nfs
erlauben Sie verwenden das Andockfenster volumes über nfs.
In meinem Fall gab es die Leistung erhöhen 16 mal! (1.8 Sek vs ~30sec)
Auch d4m-nfs hat eine Recht komplizierte Anleitung, also hier ist noch ein link mit detaillierten Beispiel: https://github.com/laradock/laradock/issues/353#issuecomment-262897619
Ich gerade verlassen Sie diese hier für andere Googler.
docker run --rm -v
oneliner d.h. fürmvn install
/grunt build
ZweckeNormalerweise volumes sollte schnell sein.
Aber Sie können nicht ändern Sie etwas machen Sie schneller, wenn Sie nicht möchten, ändern Sie das format Ihrer Festplatte.
Aber vielleicht der Flaschenhals ist die CPU oder RAM.
Sie können überprüfen, dass mit dem Befehl
docker stats
. Diese sind standardmäßig mit 2 Kernen und 2 GB RAM. Sie können dies ändern, in der Docker für Mac GUI.In der neuesten Andockfenster 17.06.0-ce-mac18-volumes gemountet mit : - Cache zu laufen scheint ganz anständig.
cached
Volumen vonvolumes: - .:/project_name:cached
aber es scheint nicht zu funktionieren. Noch ist die Geschwindigkeit langsam. Eine web-Seite braucht lange zum laden.:cached
erhöhte meine server-Start ~3 malIch hatte genau das gleiche. Für mich mit docker-bg-sync (finden Sie auf GitHub) hat eine dramatische Verbesserung in der Geschwindigkeit und CPU-Auslastung.
Nicht so nett, wie einfach die Montage der Lautstärke, wie Sie starten Sie einen neuen container für jeden sync, aber es macht den job.
Ich habe festgestellt, dass die Schaffung einer CoreOS VM unter Parallels, dann mithilfe des andockfensters befindet sich innerhalb CoreOS ist weit schneller als Docker für Mac (aktuell Version 17.12.0-ce-mac49 (21995)).
Ich bin Linux-code baut mit CMAKE/Ninja/GCC und es ist fast doppelt so schnell wie der genau gleiche build von Docker für Mac.
In meinem Fall, habe ich eine Tonne von Bibliothek Quellen, die Teil der container (z.B. Ladedruck, OpenSSL), und eine anständige Menge von C++ - code, den ich lokal auf meinem Mac.
Dies scheint eine neuere Entwicklung. Andockfenster/Mac ist viel langsamer als ich denken Sie daran, dass es ein Monat oder zwei Wochen. Vielleicht ist es nur mich...
Wir überwand dieses Problem durch die Synchronisation der lokalen und der docker für mac-Dateisystem mit syncthing. Wir Bauten ein open-source-tool, folgt diesem Ansatz, falls es hilft:
https://github.com/okteto/cnd
ignoreDelete
.git checkout
löscht Dateien auf dem remote-server. In jedem Fall, im Rahmen dercnd
dem remote-server ist ein container, könnte man automatisieren, dass die container neu erstellt werden muss, nach der jeder Kasse.