Beim Erstellen von Docker-Images auf M1-Macs mit Docker Auf dem Desktop kann bei Benutzern die Fehlermeldung „qemu-x86_64: „/lib64/ld-linux-x86-64.so.2“ konnte nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis“ angezeigt werden. Dieses Problem entsteht, weil Docker versucht, ein ARM64-Image als Basis-Image zu verwenden, später jedoch für die x86_64-Architektur kompilierte Binärdateien benötigt.
Die Hauptursache für dieses Problem ist, dass sich die Architektur des M1 Mac von herkömmlichen x86_64-Architekturen unterscheidet. Obwohl die Emulation über qemu-x86_64 unterstützt wird, führt das Fehlen der erforderlichen Datei „/lib64/ld-linux-x86-64.so.2“ im ARM64-Basisimage zu dem gemeldeten Fehler.
< h3>Lösung:
Entgegen der Intuition lautet die Lösung: Geben Sie explizit --platform=linux/amd64 in der Zeile „FROM“ in der Docker-Datei an:
FROM --platform=linux/amd64 ubuntu:focal
Dadurch wird Docker angewiesen, ein x86_64-Basisimage zu verwenden, um sicherzustellen, dass die erforderlichen Dateien vorhanden sind während des Build-Prozesses vorhanden. Wenn Sie von einem x86_64-Image ausgehen, kann der Build-Prozess ohne Emulation fortgesetzt werden, wodurch der Fehler „Datei nicht gefunden“ behoben wird.
Alternativ können Benutzer erwägen, ihre eigenen ARM64-basierten Basis-Images zu erstellen und die erforderliche Software manuell darin zu kompilieren Container während der Bauzeit. Diese Option eignet sich jedoch möglicherweise besser für bestimmte Szenarien, in denen keine vorgefertigten ARM64-Binärdateien verfügbar sind.
Das obige ist der detaillierte Inhalt vonWarum schlägt mein Docker-Build mit „qemu-x86_64: ‚/lib64/ld-linux-x86-64.so.2' konnte nicht geöffnet werden' auf M1-Macs fehl?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!