Blog
Erstellen von Intel Docker-Containern auf dem Mac M1

Lima ist ein Tool, das oft als Containerd für Mac bezeichnet wird. Mit ihm können Sie
Mac Computer mit Apple Sillicon
Ende 2020 brachte Mac seine ersten Systeme mit Apple Silicon auf den Markt, einem speziell für Mac entwickelten
Arm-basierten Chip. Die neuesten Ausgaben des Macbook pro verwenden den M1
Apple Silicon Prozessor, während es sich früher um einen Intel Prozessor handelte. Ihr neuer
Die Rosetta 2 Software hat jedoch einige Einschränkungen, was die Verarbeitung angeht. Insbesondere ist sie oft nicht kompatibel mit Anwendungen für virtuelle Maschinen, was uns zum nächsten Thema bringt: Docker.
Herausforderungen mit Docker bei Verwendung des neuen M1-Prozessors
Ein beträchtlicher Teil der Entwickler verwendet Docker für ihre lokale Entwicklungsarbeit.
Standardmäßig unterstützt Docker die Emulation von amd64 durch die Angabe des --platform linux/amd64
Flagge für die Erstellung und Ausführung von Containern. Die meisten Images und Pakete sind für amd64 verfügbar,
Lima für die Erstellung von Docker-Images einrichten
Und hier kommt Lima ins Spiel. Mein Ziel war es, eine Umgebung einzurichten, in der ich Docker
Sie können lima auf MacOS mit brew installieren: brew install lima.
Sobald es installiert ist: limactl start und wählen Sie:
Open an editor to review or modify the current configuration
In der Zeile, in der arch: null steht, ersetzen Sie null durch x86_64. Standardmäßig verwendet
die Architektur Ihres Betriebssystems (im Falle eines M1 ist es aarch64).
Nachdem Sie die Konfigurationsdatei gespeichert haben, geben Sie die folgenden Befehle ein:
limactl shell default
sudo systemctl start containerd
sudo nerdctl run --privileged --rm tonistiigi/binfmt --install all
exit
Dies ist erforderlich, damit das Gastbetriebssystem nicht-native Binärdateien ausführen kann. Und das war's mit der Installation! Lima wird mit containerd und nerdctl zum Erstellen von Docker-Images geliefert.
Erstellen eines Alias, um die Erstellung von Docker-Images mit Lima zu vereinfachen
Die Methode zur Erstellung von Docker-Containern sieht normalerweise folgendermaßen aus:
lima nerdctl build ., wobei lima nerdctl ein Ersatz für den Befehl docker ist.
Um meine derzeitige Arbeitsweise beizubehalten, habe ich einen Alias hinzugefügt:
alias docker='lima nerdctl'
Typ:
echo alias docker='lima nerdctl' >> ~/.zprofile um diesen Alias dauerhaft zu machen.
Jetzt können Sie den Befehl docker wie gewohnt verwenden, aber Images mit einem emulierten
Intel-Prozessor erstellen und ausführen. Sie können den Namen des Alias ändern (z.B. dockerr), wenn Sie
weiterhin in der Lage sein wollen, Ihre native Architektur zum Erstellen von Images zu verwenden.
Wenn Sie ein Docker-Image über Lima ausführen, wird automatisch eine Portweiterleitung eingerichtet, so dass
jeder Port, auf dem Ihr Container lauscht, auf localhost zu sehen ist. Darüber hinaus können Sielimactl start hat ein optionales Argument
: limactl start foobar erstellt eine Lima-Instanz namens foobar,
und mit LIMA_INSTANCE=foobar lima [command] können Sie Befehle auf dieser speziellen Instanz ausführen.
Nachteile
Standardmäßig ist Ihr Mac Home-Verzeichnis schreibgeschützt. Dies ist beabsichtigt. Die Schreibunterstützung für Mac
Ein weiterer Nachteil ist die Geschwindigkeit. Vor allem wenn Sie in Ihrem Container kompilieren, merken Sie den Unterschied zwischen einer nativen und einer emulierten Architektur deutlich. Leider wird sich das in absehbarer Zeit nicht ändern.
Verfasst von

Dennis Vink
Crafting digital leaders through innovative AI & cloud solutions. Empowering businesses with cutting-edge strategies for growth and transformation.
Unsere Ideen
Weitere Blogs
Contact



