Aktuelle (2020/08) Docker für Mac-Dateizugriff langsame Problemnotiz
Fassen Sie zusammen, was Sie untersucht haben.
- Seit jeher wurde das Problem des langsamen Dateizugriffs zwischen Host und Container in Docker für Mac erörtert.
- https://github.com/docker/for-mac/issues/77
- https://forums.docker.com/t/file-access-in-mounted-volumes-extremely-slow-cpu-bound/8076
- Warum ist es unter macOS langsam? ↓ Es scheint, dass es hier herum geschrieben ist (aber ich habe es nicht gelesen)
- https://web.archive.org/web/20201007205306/https://docs.docker.com/docker-for-mac/osxfs/#performance-issues-solutions-and-roadmap
- Im Jahr 2017 wurden der Option "Volumes" die "zwischengespeicherten" und "delegierten" Flags hinzugefügt, um dieses Problem zu beheben. Es beschleunigt den Dateizugriff auf Kosten einer gewissen Konsistenz. Die Konsistenz ist höher in der Reihenfolge "konsistent" (Standard)> "zwischengespeichert"> "delegiert".
- https://www.docker.com/blog/user-guided-caching-in-docker-for-mac/
- https://web.archive.org/web/20200611082225/https://docs.docker.com/docker-for-mac/osxfs-caching/
- https://github.com/docker/for-mac/issues/1592
- In den folgenden Benchmarks sind "zwischengespeichert" und "delegiert" 2-3 mal schneller als konsistent (Standard).
- https://www.amazee.io/blog/post/docker-on-mac-performance-docker-machine-vs-docker-for-mac
- Es ist jedoch immer noch langsamer als Linux usw. und es gibt einige inoffizielle Möglichkeiten, es schneller zu machen.
- https://www.jeffgeerling.com/blog/2020/revisiting-docker-macs-performance-nfs-volumes
- Hier sind verschiedene manuelle Einstellungen und NFS-Mount-Methoden, ein Juwel namens docker-sync, bg-sync Zusammen mit dem Benchmark wird ein Container namens / docker-bg-sync) eingeführt. Beide sind zweimal oder schneller als das "delegierte" Flag.
- Andererseits wurde in Docker Official ein Tool (?) Namens Mutagen in Edge Release v2.3.1.0 (2020-05-20) eingeführt. Es scheint, dass eine Leistung in der Nähe von Native herauskommen wird.
- https://docs.docker.com/docker-for-mac/edge-release-notes/#docker-desktop-community-2310
- https://docs.docker.com/docker-for-mac/mutagen/
- Benchmark https://github.com/docker/for-mac/issues/1592#issuecomment-634960996
- Obwohl dies einige Leistungsverbesserungen mit sich bringt, gibt es einige Probleme und wurde in Edge v2.3.5.0 entfernt.
- https://docs.docker.com/docker-for-mac/edge-release-notes/#docker-desktop-community-2350
- Der Grund wird in ↓ erklärt. Es scheint, dass der Cache möglicherweise nicht aufholt, oder es gibt ein Problem, dass das Unterverzeichnis nicht zwischengespeichert wird (ich weiß es nicht im Detail, daher habe ich es möglicherweise falsch gelesen).
* https://github.com/docker/for-mac/issues/1592#issuecomment-678397258
- Stattdessen wurde in demselben Edge v2.3.5.0 ein Dateisystem namens gRPC-FUSE eingeführt.
- https://docs.docker.com/docker-for-mac/edge-release-notes/#docker-desktop-community-2350
- Offiziell heißt es: "Dies hat eine viel schnellere Dateifreigabe und verbraucht viel weniger CPU als osxfs" (das (aktuelle) Dateisystem, in dem osxfs alt ist), aber es war in der in der obigen Ausgabe angegebenen Benchmark überhaupt nicht schneller.
- https://github.com/docker/for-mac/issues/1592#issuecomment-678411517
- In der obigen Ausgabe sagt der Entwickler von Mutagen etwas wie "Mutagen selbst kann verwendet werden, auch wenn Docker für Mac nicht installiert ist, probieren Sie es also aus".
- https://github.com/docker/for-mac/issues/1592#issuecomment-678489727
- Verwendung von https://mutagen.io/documentation/orchestration/compose
- Viele Menschen sind mit der Entfernung von Mutagen unzufrieden und kommentierten das Problem wie "Ich werde weiterhin Edge Release Build mit Mutagen verwenden."
- Mutagen wurde zum Zeitpunkt von Edge entfernt, und es gibt derzeit keine Pläne, in den Stall einzutreten (obwohl die Möglichkeit besteht, dass es neu gestaltet und erneut eingegeben wird). gRPC-FUSE wird im September stabil sein. Der Standardwert ist gRPC-FUSE, aber Sie können in den Einstellungen zum alten (osxfs) wechseln.
- Docker für Mac 2.4.0.0 mit gRPC-FUSE wurde am 30.09.2020 veröffentlicht
- https://docs.docker.com/docker-for-mac/release-notes/#docker-desktop-community-2400